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:
Dieter Schlüter 2026-10-11 21:57:12 +02:00
commit 37e4a2bca0

View file

@ -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))