feat: von Hand nachbearbeitete Ausgabe wird nicht mehr überschrieben
abschrift_korrigieren.py merkt sich die Prüfsumme der geschriebenen Ausgabe in <Ausgabe>.parts/ausgabe.sha256. Weicht die vorhandene Datei davon und vom neuen Ergebnis ab, bleibt sie erhalten; das Ergebnis kommt nach <Name>.neu.korrigiert.txt (mit eigenem Bericht) und es gibt eine Warnung. --ueberschreiben ersetzt die Datei trotzdem. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ed721b1773
commit
37e4a2bca0
1 changed files with 142 additions and 5 deletions
|
|
@ -414,6 +414,76 @@ def test_main_default_output_resume_and_glossary(sample_copy, monkeypatch, capsy
|
|||
assert target.read_text(encoding="utf-8") == result
|
||||
|
||||
|
||||
def shouting(chunk, index, system):
|
||||
"""A different model result than identity_correct."""
|
||||
return chunk.strip().replace("Vielen Dank", "VIELEN DANK")
|
||||
|
||||
|
||||
def test_main_overwrites_own_output(sample_copy, monkeypatch, capsys):
|
||||
monkeypatch.setattr(ak, "correct_chunk", identity_correct)
|
||||
monkeypatch.setattr(ak, "find_paragraph_starts", every_nth_start(5))
|
||||
run_main(monkeypatch, "-i", sample_copy)
|
||||
target = sample_copy.with_name("ramstein.de.korrigiert.txt")
|
||||
|
||||
# Unchanged output of the last run is replaced by a different result
|
||||
monkeypatch.setattr(ak, "correct_chunk", shouting)
|
||||
run_main(monkeypatch, "-i", sample_copy, "-m", "anderes:modell")
|
||||
assert "VIELEN DANK" in target.read_text(encoding="utf-8")
|
||||
assert not ak.new_output_path(target).exists()
|
||||
assert "WARNUNG" not in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_main_keeps_hand_edited_output(sample_copy, monkeypatch, capsys):
|
||||
monkeypatch.setattr(ak, "correct_chunk", identity_correct)
|
||||
monkeypatch.setattr(ak, "find_paragraph_starts", every_nth_start(5))
|
||||
run_main(monkeypatch, "-i", sample_copy)
|
||||
target = sample_copy.with_name("ramstein.de.korrigiert.txt")
|
||||
edited = target.read_text(encoding="utf-8") + "Von Hand ergänzt.\n"
|
||||
target.write_text(edited, encoding="utf-8")
|
||||
capsys.readouterr()
|
||||
|
||||
monkeypatch.setattr(ak, "correct_chunk", shouting)
|
||||
run_main(monkeypatch, "-i", sample_copy, "-m", "anderes:modell")
|
||||
|
||||
new = sample_copy.with_name("ramstein.de.neu.korrigiert.txt")
|
||||
assert target.read_text(encoding="utf-8") == edited
|
||||
assert "VIELEN DANK" in new.read_text(encoding="utf-8")
|
||||
assert sample_copy.with_name("ramstein.de.neu.aenderungen.html").is_file()
|
||||
out = capsys.readouterr().out
|
||||
assert f"WARNUNG: {target} wurde seit dem letzten Lauf geändert" in out
|
||||
assert f"Fertig: {new}" in out
|
||||
|
||||
# --ueberschreiben replaces the edited file
|
||||
run_main(monkeypatch, "-i", sample_copy, "-m", "anderes:modell", "--ueberschreiben")
|
||||
assert "VIELEN DANK" in target.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_main_keeps_differing_output_without_checksum(sample_copy, monkeypatch, capsys):
|
||||
target = sample_copy.with_name("ramstein.de.korrigiert.txt")
|
||||
target.write_text("Älteres Ergebnis, Herkunft unbekannt.\n", encoding="utf-8")
|
||||
monkeypatch.setattr(ak, "correct_chunk", identity_correct)
|
||||
monkeypatch.setattr(ak, "find_paragraph_starts", every_nth_start(5))
|
||||
run_main(monkeypatch, "-i", sample_copy)
|
||||
|
||||
assert target.read_text(encoding="utf-8") == "Älteres Ergebnis, Herkunft unbekannt.\n"
|
||||
assert sample_copy.with_name("ramstein.de.neu.korrigiert.txt").is_file()
|
||||
assert "WARNUNG" in capsys.readouterr().out
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name, expected", [
|
||||
("rede.korrigiert.txt", "rede.neu.korrigiert.txt"),
|
||||
("out.txt", "out.neu.txt"),
|
||||
])
|
||||
def test_new_output_path(name, expected):
|
||||
assert ak.new_output_path(Path("a") / name) == Path("a") / expected
|
||||
|
||||
|
||||
def test_choose_output_same_content_is_no_conflict(tmp_path):
|
||||
target = tmp_path / "rede.korrigiert.txt"
|
||||
target.write_text("gleich\n", encoding="utf-8")
|
||||
assert ak.choose_output(target, "gleich\n", tmp_path / "fehlt.parts") == target
|
||||
|
||||
|
||||
def test_main_output_option_creates_directories(sample_copy, monkeypatch):
|
||||
monkeypatch.setattr(ak, "correct_chunk", identity_correct)
|
||||
monkeypatch.setattr(ak, "find_paragraph_starts", every_nth_start(5))
|
||||
|
|
|
|||
Loading…
Reference in a new issue