refactor: Zeitauswahl nur noch über -z, -s/-e entfallen
-z 00:05:10 (ab), -z 0-00:20 (vom Anfang bis), -z 00:05-00:06 und mehrere Bereiche, mit oder ohne Anführungszeichen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
5e9a11d0f4
commit
8edef11c78
1 changed files with 93 additions and 108 deletions
|
|
@ -189,8 +189,9 @@ def test_parse_cue_time_keeps_minutes_seconds(text, seconds):
|
|||
|
||||
@pytest.mark.parametrize("text, ranges", [
|
||||
("00:5:00-00:6:00 00:10-00:12:00 00:25", [(300, 360), (600, 720), (1500, None)]),
|
||||
("-00:20", [(None, 1200)]),
|
||||
("00:25- 00:10-00:12 -00:05", [(None, 300), (600, 720), (1500, None)]),
|
||||
("0-00:20", [(None, 1200)]),
|
||||
("0:00:00-0:01", [(None, 60)]),
|
||||
("00:25- 00:10-00:12 0-00:05", [(None, 300), (600, 720), (1500, None)]),
|
||||
("00:05-00:06 00:06-00:07", [(300, 360), (360, 420)]),
|
||||
])
|
||||
def test_parse_ranges(text, ranges):
|
||||
|
|
@ -199,11 +200,14 @@ def test_parse_ranges(text, ranges):
|
|||
|
||||
@pytest.mark.parametrize("text, message", [
|
||||
("", "keine Bereiche"),
|
||||
("-", "ungültiger Bereich"),
|
||||
("-", "vom Anfang: 0-B"),
|
||||
("-00:20", "vom Anfang: 0-B"),
|
||||
("0", "das ganze Video"),
|
||||
("0-", "das ganze Video"),
|
||||
("00:06-00:05", "Start muss vor Ende"),
|
||||
("00:05-00:10 00:08-00:12", "überschneiden"),
|
||||
("00:05 00:10", "überschneiden"),
|
||||
("-00:05 -00:10", "überschneiden"),
|
||||
("0-00:05 0-00:10", "überschneiden"),
|
||||
("00:05-x", "ungültiger Bereich"),
|
||||
])
|
||||
def test_parse_ranges_rejects(text, message):
|
||||
|
|
@ -356,7 +360,7 @@ def test_split_segments_inverts_join_segments():
|
|||
# === Command line ===
|
||||
|
||||
def test_main_time_range_default_name(sample_copy, monkeypatch):
|
||||
run_main(monkeypatch, "-i", sample_copy, "-s", "0:00:30", "-e", "0:01")
|
||||
run_main(monkeypatch, "-i", sample_copy, "-z", "0:00:30-0:01")
|
||||
target = sample_copy.with_name("ramstein.de_00-00-30_bis_00-01-00.txt")
|
||||
full = SAMPLE_TXT.read_text(encoding="utf-8").splitlines()
|
||||
part = target.read_text(encoding="utf-8").splitlines()
|
||||
|
|
@ -373,19 +377,28 @@ def test_main_several_ranges(sample_copy, monkeypatch):
|
|||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("ranges", [["0:01-0:02 0:05"], ["0:01-0:02", "0:05"]])
|
||||
def test_main_ranges_with_or_without_quotes(sample_copy, monkeypatch, ranges):
|
||||
run_main(monkeypatch, "-i", sample_copy, "-z", *ranges)
|
||||
target = sample_copy.with_name("ramstein.de_00-01-00_bis_00-02-00+ab_00-05-00.txt")
|
||||
assert target.is_file()
|
||||
|
||||
|
||||
def test_main_time_range_without_captions(sample_copy, monkeypatch, capsys):
|
||||
with pytest.raises(SystemExit) as exc:
|
||||
run_main(monkeypatch, "-i", sample_copy, "-s", "99:00:00")
|
||||
run_main(monkeypatch, "-i", sample_copy, "-z", "99:00:00")
|
||||
assert exc.value.code == 1
|
||||
assert "im gewählten Zeitraum" in capsys.readouterr().err
|
||||
|
||||
|
||||
@pytest.mark.parametrize("args, message", [
|
||||
(["-s", "abc"], "ungültige Zeit"),
|
||||
(["-s", "1:00", "-e", "0:30"], "muss vor -e/--ende liegen"),
|
||||
(["-z", "0:05-0:04"], "Start muss vor Ende"),
|
||||
(["-z", "abc"], "ungültiger Bereich"),
|
||||
(["-z", "1:00-0:30"], "Start muss vor Ende"),
|
||||
(["-z", "0:05 0:10"], "überschneiden"),
|
||||
(["-z", "0:05", "-s", "0:01"], "nicht zusammen mit -s/-e"),
|
||||
(["-z", "0:05", "0:10"], "überschneiden"),
|
||||
(["-z=-0:20"], "vom Anfang: 0-B"),
|
||||
(["-z", "0"], "das ganze Video"),
|
||||
(["-s", "0:01"], "unrecognized arguments: -s"),
|
||||
])
|
||||
def test_cli_time_errors(sample_copy, monkeypatch, capsys, args, message):
|
||||
with pytest.raises(SystemExit) as exc:
|
||||
|
|
@ -397,10 +410,10 @@ def test_cli_time_errors(sample_copy, monkeypatch, capsys, args, message):
|
|||
def test_main_exact_option(tmp_path, monkeypatch):
|
||||
source = tmp_path / "rede.vtt"
|
||||
source.write_text(SPEECH, encoding="utf-8")
|
||||
run_main(monkeypatch, "-i", source, "-s", "0:01:46", "-e", "0:01:50", "--exakt")
|
||||
run_main(monkeypatch, "-i", source, "-z", "0:01:46-0:01:50", "--exakt")
|
||||
target = tmp_path / "rede_00-01-46_bis_00-01-50.txt"
|
||||
assert target.read_text(encoding="utf-8") == (
|
||||
"[00:01:46 - 00:01:49]\nkommt der dritte\nund endet. Der vierte\n"
|
||||
)
|
||||
run_main(monkeypatch, "-i", source, "-s", "0:01:46", "-e", "0:01:50")
|
||||
run_main(monkeypatch, "-i", source, "-z", "0:01:46-0:01:50")
|
||||
assert target.read_text(encoding="utf-8").endswith("und endet auch.\n")
|
||||
|
|
|
|||
Loading…
Reference in a new issue