Repository navigation
test: cover player state, loop and stop rows of the release checklist - #676
Merged
Merged
Conversation
Adds regression coverage for the slider timeline's loop box repositioning when zooming, and for a redo that re-invalidates a loop cancelling it the same way an undo does. Marks two cases xfail(strict=True): loading media that fails while other media is playing still calls Player.stop() before attempting the new load, so playback of the media that remains current gets killed too (tilia/media/player/base.py:98-99); and scale_timeline_components posts no done-signal after rescaling, unlike crop_timeline_components, so update_time_on_elements() never redraws components at their new, rescaled positions (tilia/timelines/collection/collection.py:323-325).
Adds regression coverage for: changing the playback-rate spinbox with audio loaded actually changes the player's rate; stopping while paused resets to the start; stopping while already stopped is a no-op; cancelling the local-file or YouTube-URL load dialogs leaves loaded media untouched; grouping a looped hierarchy keeps the loop; loading new media cancels an active loop; and looping a newly selected hierarchy after that works. Skips the playback-rate test: it passes on its own, but in a parallel full-suite run the xdist worker died with a Windows heap-corruption error (0xc0000374) inside the Qt media engine while changing the rate.
TestPlayer is skipped on CI because driving the Qt media engine there is flaky. The two stop checks don't drive it: one loads media, sets the current time and stops; the other asserts that stopping while already stopped never reaches the engine. Keeping them inside TestPlayer meant CI never ran them. They move to a TestStop class of their own, and _load_example becomes a module-level load_example() shared by both.
FelipeDefensor
force-pushed
the
test/player-and-loop
branch
from
October 6, 2026 19:10
2ccde03 to
1db43b7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Regression tests for the player and the loop:
Three cases are marked
xfail(strict=True), each fixed by a separate follow-up PR:The playback-rate test is skipped. It passes on its own, but in a parallel run on Windows an xdist worker died with heap corruption (
0xc0000374) inside the Qt media engine while it changed the rate. Unchangeddevshows the same kind of crash in parallel runs, in other tests each time, so the skip may blame the wrong test. That's still being looked into.tests/player/test_player.py'sTestPlayeris skipped on CI, where driving the media engine is flaky. The two stop checks never start playback, so the last commit moves them into aTestStopclass of their own that CI runs too.Run:
uv run --python 3.12 pytest tests/player tests/test_app.py tests/ui/timelines/test_timelineui_collection.pyRelease-checklist rows: R117, R118, R119, R120, R124, R128, R130, R135, R140, R152, R156, R160. The IDs refer to the checklist copy in tilia-testing (
release-checklist/test-links.csv); the code doesn't mention them.