Spaces:
Running on Zero
Running on Zero
File size: 3,629 Bytes
a2eae29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | """L2 tests for cover / extend / edit mode handlers."""
from __future__ import annotations
from unittest.mock import MagicMock
import pytest
import modes
def test_cover_requires_ref_audio():
with pytest.raises(ValueError, match="ref_audio"):
modes.cover(
MagicMock(),
params={"prompt": "p", "lyrics": "[v]", "duration_s": 30, "ref_audio": None},
)
def test_cover_passes_audio_cover_strength():
backend = MagicMock()
backend.dispatch.return_value = ("/tmp/x.wav", {})
modes.cover(
backend,
params={
"prompt": "p",
"lyrics": "[v]",
"duration_s": 30,
"ref_audio": "/tmp/ref.wav",
"audio_cover_strength": 0.9,
"loras": [],
"advanced": {},
"lm": {},
"dcw": {},
},
)
args = backend.dispatch.call_args.kwargs
assert args["mode"] == "cover"
assert args["params"]["audio_cover_strength"] == 0.9
assert args["params"]["ref_audio"] == "/tmp/ref.wav"
def test_extend_requires_seed_audio():
with pytest.raises(ValueError, match="seed_audio"):
modes.extend(
MagicMock(),
params={"extra_prompt": "p", "extra_duration_s": 60, "seed_audio": None},
)
def test_extend_passes_repaint_params():
backend = MagicMock()
backend.dispatch.return_value = ("/tmp/x.wav", {})
modes.extend(
backend,
params={
"seed_audio": "/tmp/seed.wav",
"extra_prompt": "more",
"extra_duration_s": 60,
"extension_lyrics": "[v]",
"repaint_strength": 0.5,
"wav_crossfade_s": 2.0,
"loras": [],
"advanced": {},
"lm": {},
"dcw": {},
},
)
args = backend.dispatch.call_args.kwargs
assert args["mode"] == "extend"
assert args["params"]["repaint_strength"] == 0.5
assert args["params"]["wav_crossfade_s"] == 2.0
def test_edit_repaint_passes_segment_bounds():
backend = MagicMock()
backend.dispatch.return_value = ("/tmp/x.wav", {})
modes.edit(
backend,
params={
"source_audio": "/tmp/src.wav",
"source_lyrics": "[v]",
"target_lyrics": "[c] new",
"segment_start_s": 50.0,
"segment_end_s": 90.0,
"sub_mode": "repaint",
"repaint_strength": 0.5,
"loras": [],
"advanced": {},
"lm": {},
"dcw": {},
},
)
args = backend.dispatch.call_args.kwargs
assert args["mode"] == "edit"
assert args["params"]["segment_start_s"] == 50.0
assert args["params"]["segment_end_s"] == 90.0
assert args["params"]["sub_mode"] == "repaint"
def test_edit_flow_morph_sub_mode_passes_through():
backend = MagicMock()
backend.dispatch.return_value = ("/tmp/x.wav", {})
modes.edit(
backend,
params={
"source_audio": "/tmp/src.wav",
"source_lyrics": "[v]",
"target_lyrics": "[c]",
"segment_start_s": 0.0,
"segment_end_s": 30.0,
"sub_mode": "flow_edit",
"flow_source_caption": "acoustic ballad",
"flow_n_min": 0.0,
"flow_n_max": 1.0,
"flow_n_avg": 1,
"loras": [],
"advanced": {},
"lm": {},
"dcw": {},
},
)
args = backend.dispatch.call_args.kwargs
assert args["params"]["sub_mode"] == "flow_edit"
assert args["params"]["flow_source_caption"] == "acoustic ballad"
|