Progress bar beeps now work on ffmpeg output.

This commit is contained in:
Storm Dragon
2026-07-12 15:06:44 -04:00
parent 4d94b56ee9
commit 28e4f8ab0c
3 changed files with 156 additions and 3 deletions
+98
View File
@@ -140,3 +140,101 @@ def test_progress_detector_beeps_for_interruptible_status_without_ellipsis():
command.run()
command.play_activity_beep.assert_called_once_with()
@pytest.mark.unit
def test_progress_detector_allows_long_key_value_status_delta():
progress_module = _load_progress_module()
command = progress_module.command()
sample = (
"frame=33480 fps=429 q=28.0 size= 195328KiB "
"time=00:23:16.26 bitrate=1146.0kbits/s dup=0 drop=1 "
"speed=17.9x elapsed=0:01:18.01 "
"filter=scale,format output=archive-video-final-render-pass.mkv "
"metadata=preserve-chapters-and-stream-layout"
)
command.env = {
"commandBuffer": {"progress_monitoring": True},
"runtime": {
"DebugManager": Mock(write_debug_out=Mock()),
"ScreenManager": Mock(is_screen_change=Mock(return_value=False)),
"CursorManager": Mock(is_cursor_vertical_move=Mock(return_value=False)),
},
"screen": {
"new_delta": sample,
"new_content_text": sample,
"old_cursor": {"x": 0, "y": 0},
"new_cursor": {"x": 0, "y": 0},
},
}
assert len(sample) > 200
assert command.is_real_progress_update()
@pytest.mark.unit
def test_progress_detector_beeps_for_ffmpeg_status_line():
progress_module = _load_progress_module()
command = progress_module.command()
sample = (
"frame=33480 fps=429 q=28.0 size= 195328KiB "
"time=00:23:16.26 bitrate=1146.0kbits/s dup=0 drop=1 "
"speed=17.9x elapsed=0:01:18.01"
)
command.env = {
"commandBuffer": {
"progress_monitoring": True,
"lastProgressValue": -1,
"lastProgressTime": 0,
},
"runtime": {
"DebugManager": Mock(write_debug_out=Mock()),
"ScreenManager": Mock(is_screen_change=Mock(return_value=False)),
"CursorManager": Mock(is_cursor_vertical_move=Mock(return_value=False)),
},
"screen": {
"new_delta": sample,
"new_delta_is_typing": False,
"new_content_text": sample,
"old_cursor": {"x": 0, "y": 0},
"new_cursor": {"x": 0, "y": 0},
},
}
command.play_activity_beep = Mock()
command.run()
command.play_activity_beep.assert_called_once_with()
@pytest.mark.unit
def test_progress_detector_ignores_generic_key_value_text():
progress_module = _load_progress_module()
command = progress_module.command()
sample = "host=server mode=debug user=Username retry=3 status=ready"
command.env = {
"commandBuffer": {
"progress_monitoring": True,
"lastProgressValue": -1,
"lastProgressTime": 0,
},
"runtime": {
"DebugManager": Mock(write_debug_out=Mock()),
"ScreenManager": Mock(is_screen_change=Mock(return_value=False)),
"CursorManager": Mock(is_cursor_vertical_move=Mock(return_value=False)),
},
"screen": {
"new_delta": sample,
"new_delta_is_typing": False,
"new_content_text": sample,
"old_cursor": {"x": 0, "y": 0},
"new_cursor": {"x": 0, "y": 0},
},
}
command.play_activity_beep = Mock()
command.play_progress_tone = Mock()
command.run()
command.play_activity_beep.assert_not_called()
command.play_progress_tone.assert_not_called()