fix: Ghostscript-Angebot log nicht mehr, fehlende Voraussetzungen dokumentiert (v0.7.1)
Befunde aus dem ersten echten Erstinstallations-Test auf frischen Debian-12- und Debian-13-Containern. Der Weg selbst hat getragen (Basis-Install, Instanz-Anlage, zweite Instanz, Update mit Rauchtest, Rollback) — diese Stellen haben gelogen oder gefehlt: - Das Ghostscript-Backports-Angebot auf Debian 12 war ein garantierter Leerlauf, der "aktualisiert ✓" meldete: bookworm-backports enthaelt gar kein ghostscript (am Paketindex verifiziert). Die Routine sucht jetzt den echten Kandidaten, vergleicht vorher/nachher und raeumt eine nur zur Probe angelegte Quelle wieder weg. - Derselbe untaugliche Rat stand in der Preflight-Meldung, der pdfa_level-Warnung, config.example.toml und vier Doku-Dateien — ueberall ersetzt durch die echten Optionen. - Mehrzeilige Log-Hinweise waren durch "echo -e" zerrissen und nicht kopierbar; log_* nutzt jetzt printf mit %s. - pip-freeze.txt landete beim Rollback als /pip-freeze.txt im Wurzelverzeichnis, liegt jetzt unter opt/pdf-ocr-hotfolder/. - git und sudo fehlen auf dem Proxmox-Debian-Template; "sudo ./install.sh" scheitert dort. Beide Wege dokumentiert, git als Voraussetzung ergaenzt, HTTPS-Clone als Normalfall. - Rollback: systemctl start kann kein Glob. journald-Reparatur: Instanzen danach neu starten, sonst bleibt das Journal leer. 254 Tests gruen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -137,13 +137,39 @@ def test_healthy_gs_passes_on_ocrmypdf_16() -> None:
|
||||
# ---------------- Meldungstext ----------------
|
||||
|
||||
def test_error_message_names_both_remedies() -> None:
|
||||
"""Der Admin muss aus der Meldung heraus handeln können."""
|
||||
"""Der Admin muss aus der Meldung heraus handeln können.
|
||||
|
||||
Die Wege sind die **echten**: `pdfa_level = ""` (Default), `skip_text =
|
||||
false` oder eine Distribution mit neuerem Ghostscript (Debian 13: 10.05.1).
|
||||
Bis v0.7.0 stand hier „Ghostscript aus bookworm-backports" als Weg 1 — das
|
||||
konnte nie funktionieren, denn bookworm-backports führt gar kein
|
||||
Ghostscript-Paket (am echten Paketindex verifiziert: 2606 Pakete,
|
||||
`ghostscript` nicht darunter). Der Rat darf nicht zurückkommen.
|
||||
"""
|
||||
# Fall A: ocrmypdf 16.x ohne PDF/A — Weg 1 ist hier, ocrmypdf anzuheben.
|
||||
with _env("10.0.0", "16.13.0"):
|
||||
with pytest.raises(PreflightError) as exc_info:
|
||||
check_preflight(pdfa_level="", skip_text=True)
|
||||
msg = str(exc_info.value)
|
||||
assert "backports" in msg, "Weg 1: Ghostscript aus bookworm-backports"
|
||||
assert "skip_text = false" in msg, "Weg 2: skip_text abschalten"
|
||||
msg_no_pdfa = str(exc_info.value)
|
||||
assert "ocrmypdf >= 17" in msg_no_pdfa, "Weg 1: ocrmypdf anheben"
|
||||
assert "skip_text = false" in msg_no_pdfa, "Weg 2: skip_text abschalten"
|
||||
assert "Debian 13" in msg_no_pdfa, "Weg 3: neuere Distribution"
|
||||
|
||||
# Fall B: PDF/A gewünscht — Weg 1 ist hier, PDF/A aufzugeben.
|
||||
with _env("10.0.0", "17.4.1"):
|
||||
with pytest.raises(PreflightError) as exc_info:
|
||||
check_preflight(pdfa_level="2", skip_text=True)
|
||||
msg_pdfa = str(exc_info.value)
|
||||
assert 'pdfa_level = ""' in msg_pdfa, "Weg 1: PDF/A abschalten"
|
||||
assert "skip_text = false" in msg_pdfa, "Weg 2: skip_text abschalten"
|
||||
assert "Debian 13" in msg_pdfa, "Weg 3: neuere Distribution"
|
||||
|
||||
# Und in keiner der beiden Meldungen der widerlegte Backports-Rat.
|
||||
for msg in (msg_no_pdfa, msg_pdfa):
|
||||
assert "apt install -t bookworm-backports" not in msg
|
||||
assert "sources.list.d/bookworm-backports.list" not in msg
|
||||
# Erwähnt werden darf es — aber nur als ausdrückliche Absage.
|
||||
assert "NICHT" in msg and "kein Ghostscript-Paket" in msg
|
||||
|
||||
|
||||
def test_default_config_pdfa_level_is_empty() -> None:
|
||||
|
||||
Reference in New Issue
Block a user