Skip to content

Commit 263fdfe

Browse files
committed
Refactor recording option tests
Reworked tests to match the split between base WriteGear option construction and config-level overrides. Added focused unit coverage for `build_writegear_options` (default values, FPS fallback, invalid FPS handling, and override merging), updated `RecordingSettings` tests to validate `writegear_overrides()` behavior by codec/fast-encoding mode, and relaxed GUI manager assertions to only check override-specific flags.
1 parent 08eea16 commit 263fdfe

3 files changed

Lines changed: 95 additions & 32 deletions

File tree

tests/gui/test_rec_manager.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,8 +471,6 @@ def test_start_all_passes_writegear_options(
471471

472472
opts_ovrr = rec.writer_options_overrides
473473
assert opts_ovrr is not None
474-
assert opts_ovrr["-vcodec"] == "libx264"
475-
assert opts_ovrr["-crf"] == "23"
476474
assert opts_ovrr["-preset"] == "ultrafast"
477475
assert opts_ovrr["-tune"] == "zerolatency"
478476
finally:

tests/services/test_video_recorder.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pytest
1010

1111
import dlclivegui.services.video_recorder as vr_mod
12+
from dlclivegui.config import DEFAULT_RECORDING_FPS
1213
from dlclivegui.utils.timestamps import FrameTimestampMetadata
1314

1415
# ----------------------------
@@ -528,3 +529,63 @@ def test_stop_writes_hardware_timestamp_metadata_sidecar_json(
528529
"raw_value": 1_000_000,
529530
}
530531
assert rec0["hardware_timestamp_default"] == 0.001
532+
533+
534+
def test_build_writegear_options_default():
535+
opts = vr_mod.build_writegear_options(
536+
frame_rate=100.0,
537+
codec="libx264",
538+
crf=23,
539+
)
540+
541+
assert opts == {
542+
"-input_framerate": 100.0,
543+
"-vcodec": "libx264",
544+
"-crf": 23,
545+
}
546+
547+
548+
def test_build_writegear_options_invalid_fps_uses_default():
549+
opts = vr_mod.build_writegear_options(
550+
frame_rate=0.0,
551+
codec="libx264",
552+
crf=23,
553+
)
554+
555+
assert opts["-input_framerate"] == DEFAULT_RECORDING_FPS
556+
557+
558+
@pytest.mark.parametrize(
559+
"frame_rate",
560+
[None, 0, -1, "invalid"],
561+
)
562+
def test_build_writegear_options_unusable_fps_uses_default(
563+
frame_rate,
564+
):
565+
opts = vr_mod.build_writegear_options(
566+
frame_rate=frame_rate,
567+
codec="libx264",
568+
crf=23,
569+
)
570+
571+
assert opts["-input_framerate"] == DEFAULT_RECORDING_FPS
572+
573+
574+
def test_build_writegear_options_merges_overrides():
575+
opts = vr_mod.build_writegear_options(
576+
frame_rate=100.0,
577+
codec="libx264",
578+
crf=23,
579+
overrides={
580+
"-preset": "ultrafast",
581+
"-tune": "zerolatency",
582+
},
583+
)
584+
585+
assert opts == {
586+
"-input_framerate": 100.0,
587+
"-vcodec": "libx264",
588+
"-crf": 23,
589+
"-preset": "ultrafast",
590+
"-tune": "zerolatency",
591+
}

tests/test_config.py

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -76,43 +76,47 @@ def test_trigger_source_defaults_to_auto():
7676
assert trigger.source == "auto"
7777

7878

79-
def test_recording_settings_writegear_options_default():
80-
settings = RecordingSettings(codec="libx264", crf=23, fast_encoding=False)
81-
82-
opts = settings.writegear_options(100.0)
83-
84-
assert opts["-input_framerate"] == 100.0
85-
assert opts["-vcodec"] == "libx264"
86-
assert opts["-crf"] == "23"
87-
assert "-preset" not in opts
88-
assert "-tune" not in opts
89-
90-
91-
def test_recording_settings_writegear_options_fast_encoding_x264():
92-
settings = RecordingSettings(codec="libx264", crf=23, fast_encoding=True)
79+
def test_recording_settings_writegear_overrides_default():
80+
settings = RecordingSettings(
81+
codec="libx264",
82+
crf=23,
83+
fast_encoding=False,
84+
)
9385

94-
opts = settings.writegear_options(100.0)
86+
assert settings.writegear_overrides() == {}
9587

96-
assert opts["-input_framerate"] == 100.0
97-
assert opts["-vcodec"] == "libx264"
98-
assert opts["-crf"] == "23"
99-
assert opts["-preset"] == "ultrafast"
100-
assert opts["-tune"] == "zerolatency"
10188

89+
def test_recording_settings_writegear_overrides_fast_encoding_x264():
90+
settings = RecordingSettings(
91+
codec="libx264",
92+
crf=23,
93+
fast_encoding=True,
94+
)
10295

103-
def test_recording_settings_writegear_options_fast_encoding_nvenc_no_x264_options():
104-
settings = RecordingSettings(codec="h264_nvenc", crf=23, fast_encoding=True)
96+
assert settings.writegear_overrides() == {
97+
"-preset": "ultrafast",
98+
"-tune": "zerolatency",
99+
}
105100

106-
opts = settings.writegear_options(100.0)
107101

108-
assert opts["-vcodec"] == "h264_nvenc"
109-
assert "-preset" not in opts
110-
assert "-tune" not in opts
102+
def test_recording_settings_writegear_overrides_fast_encoding_x265():
103+
settings = RecordingSettings(
104+
codec="libx265",
105+
crf=23,
106+
fast_encoding=True,
107+
)
111108

109+
assert settings.writegear_overrides() == {
110+
"-preset": "ultrafast",
111+
"-tune": "zerolatency",
112+
}
112113

113-
def test_recording_settings_writegear_options_invalid_fps_falls_back_to_30():
114-
settings = RecordingSettings(codec="libx264", crf=23)
115114

116-
opts = settings.writegear_options(None)
115+
def test_recording_settings_writegear_overrides_nvenc():
116+
settings = RecordingSettings(
117+
codec="h264_nvenc",
118+
crf=23,
119+
fast_encoding=True,
120+
)
117121

118-
assert opts["-input_framerate"] == 30.0
122+
assert settings.writegear_overrides() == {}

0 commit comments

Comments
 (0)