Skip to content

test(stinger): run the stinger tests one at a time, and pass file paths as properties - #1051

Merged
srperens merged 1 commit into
mainfrom
fix/stinger-tests-main
Oct 8, 2026
Merged

srperens merged 1 commit into
mainfrom
fix/stinger-tests-main

Conversation

@srperens

@srperens srperens commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Refs #1010

Problem

Since #1010 was merged, the stinger tests fail on main on all three platforms (run 37758507367). On the PR itself, the macOS and Windows jobs were skipped, and Linux passed.

  • macOS and Linux: takes reach air 60–70 ms late, and the mixer drops the late frames (frames_arrived 17–26 of 30 on the macOS runner, 29 of 30 on Linux). Two other symptoms: stinger never ready and analysis never ran after 20–30 s.
  • Windows: stinger never ready, a remux that fails with StateChangeError, and Access is denied when a clip is replaced on disk.

Change

  • Serial: every test in stinger_test, stinger_api_test, stinger_prores_test and stinger_clip_test gets #[serial_test::serial(stinger)]. Each binary ran up to 12 tests at once, each with its own vision mixer and decoders, on a 3-core runner. The tests measure frame-exact timing in real time, so they need the machine to themselves.
  • Paths as properties: the clip writers (common/stinger.rs, stinger_bench.rs) and the remux in a_clip_that_cannot_seek_plays_on_every_take put the file path inside a parse::launch string. A Windows path's backslashes are read there as escapes. location is now set as a property after the launch.

Rejected: loosening the frame-exact assertions. They are what the feature promises.

Evidence

  • Late frames come from load: all 28 tests pass on an M-series Mac, both in parallel and serially. Whether the CI runners keep up serially is unverified until this PR's macOS run.
  • Windows paths: unverified until this PR's Windows run.

Tests

Ran on macOS arm64: cargo test --test stinger_test --test stinger_api_test --test stinger_clip_test --test stinger_prores_test. Results: 12, 9, 4 and 3 passed, with write_examples_for_inspection ignored. cargo clippy --all-targets is clean.
Not run: Windows and Linux locally. ci:macos and ci:windows are set.

For the reviewer

a_cue_loads_a_parked_clip_rewritten_on_disk and reload_picks_up_a_clip_rewritten_on_disk will probably still fail on Windows. They rename a new file over a clip that the parked player holds open, and Windows refuses that. This is real product behaviour on Windows, not a test fault: an operator cannot replace a parked clip there either. It needs a decision on whether the player should release the file while parked. Not done in this PR.

🤖 Generated with Claude Code

…hs as properties

On main every stinger test binary failed on CI:

- macOS and Linux: takes arrived 60-70 ms late and the mixer dropped
  frames (22 of 30 on a macOS runner), and clip analysis missed its
  deadline. Each binary ran up to 12 tests at once, each with its own
  mixer and decoders, on a 3-core runner. Locally they land frame-exact.
  Run them one at a time with serial_test.
- Windows: the clip writers and the remux put the file path inside a
  parse::launch string, where a backslash is an escape, so the files
  went nowhere. Set `location` as a property instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@srperens srperens added ci:macos Run Build (macOS) on this pull request ci:windows Run Build (Windows) on this pull request labels Oct 8, 2026
@srperens
srperens merged commit 8fd48f3 into main Oct 8, 2026
6 of 18 checks passed
@srperens
srperens deleted the fix/stinger-tests-main branch October 8, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:macos Run Build (macOS) on this pull request ci:windows Run Build (Windows) on this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant