6 Testfälle nach Freigabe als geprüft markiert: test_pruef_ergebnis.py komplett
(Docstring-Anzahl korrigiert). Nebenbefund: die geprüften Properties
ist_verfahrens_db_aktion, erlaubte_persistierung und dateipfad werden derzeit nirgends
verwendet; PruefAktion schreibt "Datenbank" groß, Dateipruefer liefert "datenbank".
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 Testfälle nach Freigabe als geprüft markiert: test_print_layout.py komplett
(5 bestehende, 3 neue für create_single_page_layout). Nebenbefunde (direkter
qgis.PyQt-Import per importlib, removeGrid-Mock nach Name statt UUID, ungenutztes
width_limit_mm) bewusst ohne Issue: das Druckmodul wird ohnehin grundlegend überarbeitet.
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 Testfälle nach Freigabe als geprüft markiert: test_os_wrapper.py komplett
(IsCaseSensitiveFsTests, alle drei Zweige abgedeckt, keine neuen Tests nötig).
Nebenbefund: Das Ziel „OS-Prüfung nur einmal, Plugin-Code ohne OS-Weichen“ ist nur
teilweise erfüllt (hasattr(os, "startfile") in Plan41, Wurzelpfad-Prüfung von Hand in
Dateipruefer/stilpruefer, ungenutzte Wrapper-Symbole). Dafür ist ein eigenes Issue
in Plugin_SN_Basis als Entwurf vorbereitet.
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Markierung per test_audit.py markieren bestätigt eine fachliche Abnahme durch einen
Menschen. Agenten sichten und ergänzen Tests und schlagen Markierungen vor, markieren aber
erst nach ausdrücklicher Freigabe. Aufgenommen in AGENTS.md (harte Regeln, Tests),
docs/leitfaden/06_tests.md Abschnitt 7 und Skill sn-tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 Testfälle fachlich geprüft und markiert: test_navigation.py komplett (12 bestehende,
3 neue für Standardpriorität, Reihenfolge bei gleicher Priorität und fehlende Toolbar).
Nebenbefund: remove_action entfernt die Action aus Menü, Toolbar und Liste, aber nicht aus
plugin_group und ruft kein deleteLater() auf – mögliches Überbleibsel beim Plugin-Reload,
analog zu #72. Nicht behoben (kein Umbau nebenbei).
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 Testfälle fachlich geprüft und markiert: test_message_wrapper.py komplett (inkl.
1 neuer Test für die Meldungsstufen von info/warning/error/success). Nebenbefund:
die Namens-Heuristik des Testkatalogs führte warning als referenziert, weil es in
test_pruefmanager/test_dockmanager nur per @patch ersetzt wird (bekannte, in
testkatalog.py dokumentierte Grenze).
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5 Testfälle fachlich geprüft und markiert: test_ly_style_wrapper.py komplett (inkl.
1 neuer Test für die Pfadübergabe). Nebenbefunde: Debug-print() in apply_style als
Kommentar zu #79 vorbereitet; ungültige Layer in apply_style/apply_style_from_path
im Code mit Verweis auf #84 markiert. Nachtrag zum vorigen Audit-Commit: die dort
vorbereiteten Issues sind #84 (layer_is_valid/layer_is_usable) und #85 (Layerpruefer).
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 Testfälle fachlich geprüft und markiert: test_ly_existence_wrapper.py komplett
(inkl. 3 neuer Tests für layer_exists). Dabei gefunden und in Plugin_SN_Basis als
Issues vorbereitet (Absenden durch den Menschen): layer_is_valid/layer_is_usable
haben keinen Aufrufer, isValid() wird rund 20-mal direkt aufgerufen (nutzen oder
entfernen); Layerpruefer lässt ungültige Layer im Existenz-Schritt durch.
Testkatalog neu erzeugt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 Testfälle fachlich geprüft und markiert: test_landkreise.py komplett (6, inkl.
4 neuer Tests) und test_layerloader.py komplett (32, inkl. 7 neuer Tests). Dabei
gefunden und in Plugin_SN_Basis als Issues vorbereitet (Absenden durch den
Menschen): #80 (REST-Link ohne Layer-Index lädt still Layer 0), #81 (unbekannter
Provider fällt still auf ogr zurück), #82 (Datenabruf und LayerLoader bauen aus
demselben REST-Link widersprüchliche URLs), #83 (filter_by_extent/filter_by_layer
reichen ungültige Layer still durch).
Testkatalog neu erzeugt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
48 weitere Testfälle in sn_basis fachlich geprüft und markiert (test_datenabruf.py: 24,
test_datenschreiber.py: 18, test_dockmanager.py: 6). Dabei zwei fragliche Codestellen
gefunden und als offene Punkte in STATUS.md festgehalten:
- Basis #77: Datenabruf._fetch_features() klassifiziert WMS-Zeilen immer als "ausserhalb",
ohne dass je ein Layer geschrieben wird; der Kommentar "caller behandelt WMS separat"
trifft nicht zu.
- Basis #78: Datenschreiber.schreibe_log() meldet Erfolg mit dem sachfremden Aktionscode
"standarddatei_vorschlagen" (vermutlich Copy-Paste-Rest), aktuell folgenlos.
Testkatalog neu erzeugt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CloseEventTests (test_base_dockwidget.py, 5 Tests), TestDataGrabber._aggregate_results-Tests
(test_datagrabber.py, 2 Tests) und alle bisher ungeprüften TestDateipruefer-Tests
(test_dateipruefer.py, 12 Testfälle inkl. der mit #70 ergänzten) als am 2026-09-21 fachlich
geprüft markiert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sn_basis steht laut Prüfstand jetzt bei 0 ungeklärten Funktionen. Fallstricke.md um den
Windows-Fallstrick "sqlite3-Verbindung aus with-Block schließt nicht, TemporaryDirectory-
Cleanup schlägt fehl" ergänzt (Fund aus Basis #70).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Jedes Paket zeigt jetzt dieselben Kennzahl-Kacheln wie die Gesamtübersicht
(Testdateien, Testfälle, grün/rot/übersprungen, mit Docstring, geprüft,
ohne Testbezug) statt eines Fließtexts.
Ungetestete Funktionen werden per Docstring-Auswertung als "beabsichtigt"
(Vermerk "von Test abgesehen, weil …" oder "Test ausgesetzt, zunächst
Refactor") oder "ungeklärt" markiert - in Markdown als Anmerkung je
Funktion, im Prüfstand als Pille mit Tooltip (Begründung).
Der Abschnitt "Ungetestete Funktionen" ist im Prüfstand jetzt eine
ausklappbare Karte wie eine Testdatei, mit eigener Kennzahl-Übersicht
(Anzahl, ungeklärt, beabsichtigt) im Kopf - bewusst von den Filter-Chips
ausgenommen (.gapcard), da diese sich auf Testfall-Status beziehen, nicht
auf Quellcode-Funktionen.
Neue Funktion absichtlicher_verzicht() plus 6 neue Tests in
scripts/tests/test_testkatalog_quellfunktionen.py.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sn_basis: 244 -> 249 Testfälle. fallstricke.md: _MockQDockWidget ohne
closeEvent(), zwei bestätigte Testkatalog-Fehlalarme (toter Code in
Pruefmanager._ask_use_or_replace_pufferlayer, Issue #60) sowie das Muster
Klasse.__new__(Klasse) für UI-Klassen, die im Mock nicht konstruierbar
sind. modulkarte.md an aktuelle Testdateizahl angepasst.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ergänzt den Testkatalog um einen Abschnitt "Ungetestete Funktionen": Quellcode-Funktionen
und -Methoden, deren Name in keiner Testdatei des Pakets vorkommt (Namensabgleich per ast,
ohne Import). Keine Wiederaufnahme der in ADR 0009 verworfenen Zeilen-Coverage-in-Prozent,
sondern eine Lückenliste nach demselben Muster wie der bestehende Abschnitt für fehlende
Docstrings - entsprechend in ADR 0009 und docs/leitfaden/06_tests.md ergänzt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 4 Tests gegen modules/stilpruefer.py geprüft - Docstrings passen
zur Implementierung, keine Diskrepanzen. Dabei entdeckt: der relative
Pfad-Zweig (sn_plan41/assets-Redirect) ist untestet und hängt von
get_plugin_root() ab, das laut #50 in Plugin_SN_Verfahrensgebiet einen
Junction-Auflösungsfehler hat. Test für diesen Zweig zurückgestellt,
bis der #50-Fix vorliegt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 4 Tests gegen functions/settings_logic.py geprüft. Eine Docstring
war ungenau (Fallback-Verantwortung fälschlich load() zugeschrieben,
siehe vorheriger Commit) - jetzt korrigiert, alle vier bestätigt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 14 Tests gegen modules/Pruefmanager.py geprüft - Docstrings passen
zur Implementierung. Dabei entdeckt: _ask_use_or_replace_pufferlayer()
und _handle_verfahrensgebiet_layer_existiert() haben weder Tests noch
Aufrufer im gesamten Workspace; erstere referenziert ein nicht
existierendes self.pruefmanager (Absturz bei Aufruf) - dafür eigenes
Issue angelegt (Entwurf in entwuerfe/), analog zu #59.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 6 Tests (5 bestehende + neuer Testfall für leere Eingabe) gegen
modules/linkpruefer.py geprüft - Docstrings passen zur Implementierung,
keine Diskrepanzen gefunden.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 10 Tests gegen modules/layerpruefer.py geprüft - Docstrings passen
zur Implementierung, keine Diskrepanzen gefunden. Monkeypatch-Isolation
in setUp() (kein tearDown) bewusst unangetastet gelassen, da aktuell
keine andere Testdatei Layerpruefer verwendet.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Alle 5 Tests gegen functions/laenderkennung.py geprüft - Docstrings
passen zur Implementierung, keine Diskrepanzen gefunden.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
leereingabe_erlaubt, leereingabe_nicht_erlaubt, temporaer_erlaubt,
datei_nicht_gefunden, datei_ok geprüft und bestätigt - Docstrings passen
zur Implementierung. test_standarddatei_vorschlagen bewusst ausgenommen,
solange die Design-Entscheidung zu Basis #59 (Standarddatei-Modus) offen
ist.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fund aus dem Test-Audit (#16): Dateipruefer/Pruefmanager prüfen bei
standarddatei_vorschlagen nie file_exists(). Bearbeitung bewusst
zurückgestellt, bis geklärt ist, ob der Standarddatei-Modus überhaupt
gebraucht wird - separates Issue Basis #59, eigener Branch bei Bedarf.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nach der Testabgleichung in Plugin_SN_Verfahrensgebiet (bugfix/16-
flurstueck-alkis-testabgleich): Docstrings jetzt in "Prueft, dass ..."-
Form, ein Test entfernt, Gruen/Rot-Zaehlung aktualisiert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
sn_basis steht jetzt bei 94 von 94 Testfällen mit Docstring (100 %),
Gegenstück zu Plugin_SN_Basis-Commit 23aab76 (Branch
feature/testdatagrabber-docstrings).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Erster echter Audit-Durchgang mit scripts/test_audit.py: alle sechs
TestDataGrabber-Testfälle durchgesehen, mit Docstring versehen
(Plugin_SN_Basis, separater Branch/PR) und als geprüft markiert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
status zeigt je Treffer "<Datei>:<Zeile>" (in Editor-Terminals anklickbar)
und optional per --code den Testquelltext im Terminal. Der Prüfstand selbst
bleibt ohne Quelltext, um Diff-Lärm bei jeder Codeänderung zu vermeiden.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ticket #16 ist mit dieser PR technisch umgesetzt (Skript + Datenformat +
Prüfstand); der eigentliche Audit-Durchgang durch die 346 Testfälle ist
ein separater nächster Schritt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ticket #16. docs/status/testpruefungen.json hält je Testfall Datum und
Kurzprüfsumme der letzten fachlichen Prüfung fest; scripts/testkatalog.py
liest das und zeigt es als eigene Spalte/Pille (nie geprüft / geprüft am …
/ veraltet seit Änderung …), unabhängig vom Baseline-Status. Neues Skript
scripts/test_audit.py (status/markieren) pflegt die Datei; erste Tests für
scripts/ unter scripts/tests/.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
scripts/testkatalog.py schreibt jetzt zusaetzlich zu testkatalog.md ein
eigenstaendiges, lokal oeffenbares HTML-Dashboard (docs/tests/testkatalog.html):
je Testdatei ein Mermaid-Baumdiagramm Datei -> Testgruppe -> Testfall,
Statusfarbe aus der Baseline, plus Filter (rot/uebersprungen/schwach
beschrieben) und Volltextsuche. Generiert direkt aus denselben
Paketkatalog-Dataclasses wie der Markdown-Katalog, kein zweiter Parse-Schritt.
--pruefen prueft jetzt beide Dateien; --ohne-html erzeugt/prueft nur die
Markdown-Datei; --html-ausgabe setzt ein anderes Ziel. Mermaid laedt von
cdnjs.cloudflare.com (Fallstrick dokumentiert: ohne Internetverbindung bleiben
nur die Diagramme leer).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bisher gab es keinen Platz fuer rein fachliche Ablaufbeschreibungen
unabhaengig von Tests: docs/ ist projektuebergreifendes Wissen,
docs/tests/ ist testkonzept-gebunden. projekte/<paket>/ablaeufe/
schliesst diese Luecke, gegliedert nach Plugin-Paketname wie in
workspace.toml.
Erster Eintrag: projekte/sn_verfahrensgebiet/ablaeufe/alkis-laden.md,
uebernommen aus Plugin_SN_Verfahrensgebiet/docs/aus_alkis_laden.md
(dort entstanden, bevor es dieses Wissensrepo gab).