84 lines
4.7 KiB
Markdown
84 lines
4.7 KiB
Markdown
# Tasks
|
||
|
||
Aufteilung: 1. Ursache feststellen (blockierend), 2. Testschicht, 3. Spec/README,
|
||
4. Serverseitiger Fix nur falls 1 ihn hergibt.
|
||
|
||
## 1. Ursache feststellen (Verifikation des Ist-Zustands)
|
||
|
||
- [x] 1.1 Jobpfad reproduzieren: Image bauen, Testcontainer mit
|
||
`PRINTER_OPTIONS="BRColorMode=None TonerSaveMode=True"` starten, einen Job
|
||
einreichen (`podman exec <c> lp -d <queue> -o raw <sample>` oder
|
||
`cupsfilter <sample>`), und im versandten PostScript
|
||
(`/var/spool/cups/d<JobId>-*`, Job-Nummer aus
|
||
`lpstat -W completed -o`) prüfen, ob der Tonerspar-Zweig
|
||
(`statusdict/tonersave` … `true`) enthalten ist.
|
||
Verifikation: Ergebnis (enthalten/nicht enthalten) mit dem ausgelesenen
|
||
Spool-Pfad und der CUPS-Version in design.md notieren.
|
||
- [x] 1.2 Zweiten Messpunkt gegen die Queue-Defaults aufnehmen: denselben Job
|
||
zusätzlich mit explizitem `-o BRColorMode=Vivid` einreichen und die
|
||
`UseCIEColor`-Zeile im Spool mit der des ersten Jobs vergleichen.
|
||
Verifikation: dokumentierter Unterschied (oder dessen Fehlen) zeigt, ob
|
||
per-Job-Optionen im selben Pfad sichtbar werden — belegt, dass die
|
||
Messmethode aus 1.1 trägt.
|
||
- [x] 1.3 Queue-Zustand desselben Containers gegengelesen:
|
||
`lpoptions -p <queue> -l` (Sternchen) und
|
||
`grep '^Default' /etc/cups/ppd/<queue>.ppd`.
|
||
Verifikation: die Abweichung aus dem Ausgangsbefund ist entweder
|
||
bestätigt (`*False` bei `DefaultTonerSaveMode True`) oder widerlegt;
|
||
Ergebnis in design.md festhalten.
|
||
- [x] 1.4 Ergebnis einordnen und die Entscheidung nach Design D3 treffen:
|
||
erreicht der Queue-Default den Job (Szenario in specs/… bleibt) oder nicht
|
||
(design.md um das Resultat ergänzen, Szenario auf das verifizierte
|
||
Verhalten umformulieren, Limitation explizit benennen).
|
||
Verifikation: design.md enthält den Messwert und die getroffene
|
||
Entscheidung; die betroffenen Tasks aus 2/3 sind entsprechend markiert.
|
||
Ohne dieses Ergebnis werden 2.x/3.x nicht abgehakt.
|
||
|
||
## 2. Automatisierter Nachweis (neue Testschicht)
|
||
|
||
- [x] 2.1 `tests/test-queue-defaults.sh` anlegen: baut das Image, startet einen
|
||
Container mit `PRINTER_OPTIONS="BRColorMode=Vivid TonerSaveMode=False"`,
|
||
wartet auf `ready: CUPS on 631/tcp`, reicht einen Job ohne
|
||
`print-quality`/Preset-Attribute ein und liest das letzte Spool-File
|
||
(`lpstat -W completed -o` → `/var/spool/cups/d<JobId>-*`).
|
||
Verifikation: Skript läuft lokal durch (`bash tests/test-queue-defaults.sh`),
|
||
Ausgabe zeigt den Spool-Pfad und die gefundenen PostScript-Zeilen.
|
||
- [x] 2.2 Assertions gemäß Ergebnis aus 1.4 einbauen: `UseCIEColor true` für den
|
||
Queue-Default `Vivid` und der Tonerspar-Zustand aus dem verifizierten
|
||
Verhalten für `TonerSaveMode=False`; zusätzlich muss die
|
||
`UseCIEColor`-Zeile bei explizitem `-o BRColorMode=None` abweichen
|
||
(Regressionsschutz). Vergleich nur über `grep -F` auf Zeilen, kein Parsen
|
||
von PDF/PS-Struktur.
|
||
Verifikation: Skript endet mit Exit 0 und einer PASS-Zeile pro Assertion;
|
||
eine absichtlich falsch gesetzte Erwartung lässt es mit Exit ≠ 0 und
|
||
Klartextzeile scheitern.
|
||
- [x] 2.3 Lebensdauer/Umgebung absichern: Container immer aufräumen (Trap),
|
||
kurze Wiederholung des Spool-Lesens statt Polling, und im Skriptkopf die
|
||
verifizierte CUPS-Version notieren.
|
||
Verifikation: `podman ps -a` zeigt nach einem Lauf keinen Testcontainer;
|
||
zweiter Lauf hintereinander ist grün.
|
||
|
||
## 3. Spec und README angleichen
|
||
|
||
- [x] 3.1 `README.md`, Abschnitt *Environment variables* / `PRINTER_OPTIONS`:
|
||
eine Zeile ergänzen, was ein Queue-Default für den Ausdruck bedeutet
|
||
(Queue-Default schlägt den PPD-Default, sichtbar im versandten
|
||
PostScript), mit Verweis auf das Testskript.
|
||
Verifikation: `grep -n 'PRINTER_OPTIONS' README.md` zeigt den neuen Satz;
|
||
die genannte Assertion stimmt mit 2.2 überein.
|
||
- [x] 3.2 `entrypoint.sh`-Hinweis prüfen: der bestehende Kommentar bei
|
||
`apply_printer_options` (Zeile ~341–345) behauptet, `lpadmin` würde
|
||
unbekannte Zuweisungen speichern — mit dem Befund aus 1.x abgleichen und
|
||
nur bei Bedarf präzisieren.
|
||
Verifikation: `jj diff` zeigt entweder keine Änderung an entrypoint.sh
|
||
oder ausschließlich Kommentar/Log-Text, ohne Verhaltensänderung.
|
||
|
||
## 4. Aktualisierung der Hauptspec (Archive-Zeitpunkt)
|
||
|
||
- [ ] 4.1 Beim Archivieren die Delta-Spec nach
|
||
`openspec/specs/printserver/cups/spec.md` übernehmen und dabei die alte
|
||
Fassung des Requirements *Queue defaults are configurable at runtime*
|
||
(Zeilen 69–89) durch die neue, job-beobachtbare Fassung ersetzen.
|
||
Verifikation: `openspec validate --strict` ohne Findings; die Hauptspec
|
||
enthält genau eine Fassung des Requirements.
|