You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
camera.test_configure_current_sibling_unmark_single_undo is still flaky after #296. PR #300 hit the same Camera2D current-state undo symptom in Godot tests / macOS, even though PR #300 does not touch camera code and the same test matrix passed locally plus on Linux/Windows CI.
This looks like a recurrence of the camera-current race tracked in #140 and #278, which #296 closed by widening the settle window, checking Viewport.get_camera_2d() for Camera2D, and cleaning camera-suite fixtures per test.
Godot tests: 1043/1060 passed, 1 failed
FAIL: camera.test_configure_current_sibling_unmark_single_undo: After undo second should not be current. viewport_cam=UndoSecond:<Camera2D#1720486792976> first_in_tree=true second_in_tree=true
PR #300 only touches lifecycle reliability code (connection.gd, dispatcher.gd, sessions/registry.py, error-code parity, and related tests). It does not modify camera_handler.gd or test_camera.gd.
Observed signal on the same head SHA:
Local script/ci-godot-tests: 1045/1060 passed, 0 failed
CI Godot tests / Linux: passed
CI Godot tests / Windows: passed
CI Godot tests / macOS: failed with the camera undo symptom above
Instrument the undo path around _apply_clear_current, _apply_make_current, _is_current_settled, and the test's post-undo assertion with per-attempt state: first.is_current(), second.is_current(), viewport.get_camera_2d(), and elapsed settle attempts.
Check whether the undo action executes clear_current on Second and make_current on First in the expected order, and whether the viewport slot lags even after both bound methods return.
Decide whether the production handler needs a stronger post-undo settle path, or whether the test should wait for a deterministic editor/viewport boundary before asserting.
Keep this distinct from the separate reload-smoke camera.test_make_current_does_not_cross_classes flake; this occurrence is the sibling undo/current-state test.
Summary
camera.test_configure_current_sibling_unmark_single_undois still flaky after #296. PR #300 hit the same Camera2D current-state undo symptom inGodot tests / macOS, even though PR #300 does not touch camera code and the same test matrix passed locally plus on Linux/Windows CI.This looks like a recurrence of the camera-current race tracked in #140 and #278, which #296 closed by widening the settle window, checking
Viewport.get_camera_2d()for Camera2D, and cleaning camera-suite fixtures per test.New failing example
Godot tests / macOSjob74144847847Run handler testsFailure:
Why this is probably not PR #300
PR #300 only touches lifecycle reliability code (
connection.gd,dispatcher.gd,sessions/registry.py, error-code parity, and related tests). It does not modifycamera_handler.gdortest_camera.gd.Observed signal on the same head SHA:
script/ci-godot-tests:1045/1060 passed, 0 failedGodot tests / Linux: passedGodot tests / Windows: passedGodot tests / macOS: failed with the camera undo symptom abovePrior context
camera.test_configure_current_sibling_unmark_single_undoflake and noted that fix(camera): verify is_current after commit to close macOS headless race #120's_verify_current_after_commitcovered the forward/apply side but not the undo-side viewport lag.Viewport.get_camera_2d(), and clearing current cameras during camera test teardown.This PR #300 failure suggests #296 reduced but did not eliminate the undo-side race.
Suggested investigation
camera.test_configure_current_sibling_unmark_single_undoagainst a post-Stabilize camera current-state handling #296 tree._apply_clear_current,_apply_make_current,_is_current_settled, and the test's post-undo assertion with per-attempt state:first.is_current(),second.is_current(),viewport.get_camera_2d(), and elapsed settle attempts.clear_currenton Second andmake_currenton First in the expected order, and whether the viewport slot lags even after both bound methods return.camera.test_make_current_does_not_cross_classesflake; this occurrence is the sibling undo/current-state test.Acceptance