Skip to content

fix(ci): stop the macOS GUI job from hanging - #14

Merged
ogunc merged 2 commits into
mainfrom
fix/macos-gui-hang
Oct 20, 2026
Merged

ogunc merged 2 commits into
mainfrom
fix/macos-gui-hang

Conversation

@ogunc

@ogunc ogunc commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Summary

Brings @marcel1983's macOS GUI hang fix from his fork to main: gui (macos-latest, 3.12) has been hanging for hours on every main run since #3, until the runner is lost.

Linked issue

No issue. The two commits are cherry-picked from the fork with -x; authorship is preserved.

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Documentation
  • CI / tooling

Changes

  • tests/gui/test_error_reporting.py (f2487b6): test_an_unread_failure_report_is_kept_alive closes the message box after checking it. On macOS a parented QMessageBox is a window-modal sheet, and on a main window that was never shown its modal session never ends, so pytest-qt's next event pass waits forever. The application is unaffected; its main window is always visible.
  • .github/workflows/ci.yml (f569d82): the gui job gets timeout-minutes: 30, and on macOS the suite runs with -vv -o faulthandler_timeout=300, so any other hang fails in half an hour and names its test. Job names are unchanged, so the required checks on main are unaffected.

Architectural checklist

  • No from PySide6 in core/ or services/
  • No import openseespy in core/ or views/
  • Public functions have type hints + docstrings
  • Heavy work runs off the GUI thread (no app code changed)

Testing

  • Linux, Python 3.12: tests/gui/test_error_reporting.py 7 passed under xvfb-run; ruff clean; workflow YAML parses with the new timeout and the split Windows/macOS steps.
  • The macOS behaviour can only be confirmed by this PR's own gui (macos-latest, 3.12) run.

Generated by Claude Code

marcel1983 and others added 2 commits October 20, 2026 08:31
…uck test

The macOS GUI job has been stopping around test 145 with no output and
holding a runner until GitHub's six-hour default cancels it. The GUI job now
has a 30-minute limit, and on macOS the suite runs with one line per test
(-vv) and pytest's faulthandler_timeout=300, so a test that hangs dumps the
traceback of every thread and the log names it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit f569d82)
…suite

The macOS GUI job stopped after test_a_closed_failure_report_does_not_break_
the_run_teardown: faulthandler showed pytest-qt's post-call processEvents of
test_an_unread_failure_report_is_kept_alive never returning. That test shows a
QMessageBox parented to a main window that was never shown; on macOS such a
box is a window-modal sheet, and on an invisible window its modal session
never ends. The test now closes the box once it has checked it. The
application is unaffected: its main window is always visible.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit f2487b6)
@ogunc
ogunc merged commit ce0d702 into main Oct 20, 2026
9 checks passed
@ogunc
ogunc deleted the fix/macos-gui-hang branch October 20, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants