Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions corridorkey_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,10 +372,10 @@ def run_inference_cmd(
auto_despeckle=despeckle,
despeckle_size=despeckle_size if despeckle_size is not None else 400,
refiner_scale=refiner,
generate_comp=generate_comp,
gpu_post_processing=gpu_post,
image_size=image_size,
tiled_inference=tiled_inference,
generate_comp=generate_comp if generate_comp is not None else InferenceSettings.generate_comp,
gpu_post_processing=gpu_post if gpu_post is not None else InferenceSettings.gpu_post_processing,
image_size=image_size if image_size is not None else InferenceSettings.image_size,
tiled_inference=tiled_inference if tiled_inference is not None else InferenceSettings.tiled_inference,
)
else:
settings = _prompt_inference_settings(
Expand Down
36 changes: 36 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,3 +255,39 @@ def test_skip_existing_passed_through(self, mock_run, mock_scan):
mock_run.assert_called_once()
_, kwargs = mock_run.call_args
assert kwargs["skip_existing"] is True

@patch("corridorkey_cli.scan_clips")
@patch("corridorkey_cli.run_inference")
def test_headless_optional_flags_use_dataclass_defaults(self, mock_run, mock_scan):
"""Unset optional flags fall back to InferenceSettings defaults, not None.

When the four required flags (--linear/--srgb, --despill, --despeckle,
--refiner) are provided, the headless branch skips the interactive
prompt. Optional flags (--comp, --gpu-post, --image-size, --tile) left
unset must inherit the InferenceSettings dataclass defaults rather
than propagate as None, since downstream code uses these fields as
bool/int without None-guards.
"""
mock_scan.return_value = []

result = runner.invoke(
app,
[
"run-inference",
"--srgb",
"--despill",
"5",
"--despeckle",
"--refiner",
"1.0",
],
)
assert result.exit_code == 0

mock_run.assert_called_once()
_, kwargs = mock_run.call_args
settings = kwargs["settings"]
assert settings.generate_comp is True
assert settings.gpu_post_processing is False
assert settings.image_size == 2048
assert settings.tiled_inference is False