flowchart TD
root(["test_message_wrapper.py"])
class root rootnode
root --> g1["GetMessageBarTests (2)"]
@@ -657,15 +657,19 @@
class g2 groupnode
g2 --> t3("liefert_dict_mit_titel_text_level_und_dauer")
g2 --> t4("fehler_in_der_message_bar_wird_abgefangen")
+ root --> g3["MeldungsstufenTests (1)"]
+ class g3 groupnode
+ g3 --> t5("info_warning_error_success_setzen_die_passende_meldungsstufe")
class t1 ok
class t2 ok
class t3 ok
class t4 ok
+ class t5 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600;
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
- classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;
Prüft, dass teardown_verfahrensgebiet_listener alle Signale trennt und mehrfacher Aufruf nicht fehlschlägt.
grün
nie geprüft
-
Heuristik: Name kommt in keiner Testdatei des Pakets vor (Details siehe docs/tests/testkatalog.md). beabsichtigt liest den Docstring der Funktion – ein Vermerk wie „von Test abgesehen, weil …“ oder „Test ausgesetzt, zunächst Refactor“ gilt als bewusste Entscheidung. ungeklärt hat weder Test noch Vermerk.
Heuristik: Name kommt in keiner Testdatei des Pakets vor (Details siehe docs/tests/testkatalog.md). beabsichtigt liest den Docstring der Funktion – ein Vermerk wie „von Test abgesehen, weil …“ oder „Test ausgesetzt, zunächst Refactor“ gilt als bewusste Entscheidung. ungeklärt hat weder Test noch Vermerk.
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 803d427..46fcb32 100644
--- a/docs/tests/testkatalog.md
+++ b/docs/tests/testkatalog.md
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
-Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `86bcb6ced85a`)
+Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `4ed158c391ca`)
-Gesamt: 3 Pakete, 49 Testdateien, 596 Testfälle – 553 grün, 35 rot (Baseline), 8 übersprungen.
-Mit Beschreibung (Docstring): 451 von 596 (76 %).
-Fachlich geprüft: 176 von 596 (30 %) aktuell, 0 veraltet seit Codeänderung, 420 nie geprüft.
-Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
+Gesamt: 3 Pakete, 49 Testdateien, 597 Testfälle – 554 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 452 von 597 (76 %).
+Fachlich geprüft: 181 von 597 (30 %) aktuell, 0 veraltet seit Codeänderung, 416 nie geprüft.
+Strukturelle Lücken (heuristisch, Namensabgleich): 143 von 413 (35 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
-| `sn_basis` | 32 | 344 | 344 | 0 | 0 | 344 von 344 (100 %) | 176 von 344 (51 %) | 72 von 229 (31 %) |
+| `sn_basis` | 32 | 345 | 345 | 0 | 0 | 345 von 345 (100 %) | 181 von 345 (52 %) | 70 von 229 (31 %) |
| `sn_verfahrensgebiet` | 12 | 208 | 166 | 34 | 8 | 106 von 208 (51 %) | 0 von 208 (0 %) | 34 von 104 (33 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
-| **Summe** | **49** | **596** | **553** | **35** | **8** | **451 von 596 (76 %)** | **176 von 596 (30 %)** | **145 von 413 (35 %)** |
+| **Summe** | **49** | **597** | **554** | **35** | **8** | **452 von 597 (76 %)** | **181 von 597 (30 %)** | **143 von 413 (35 %)** |
### Legende
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 145 von 413 (35 %) Funktione
## Paket `sn_basis`
-Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 344 Testfällen (344 grün, 0 rot, 0 übersprungen).
+Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 345 Testfällen (345 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -384,13 +384,15 @@ Testgruppen:
- `GetMessageBarTests` (2 Testfälle): — (Docstring fehlt)
- `PushMessageTests` (2 Testfälle): — (Docstring fehlt)
+- `MeldungsstufenTests` (1 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- |
-| `GetMessageBarTests.test_liefert_objekt_mit_pushmessage_methode` | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | nie geprüft |
-| `GetMessageBarTests.test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck` | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | nie geprüft |
-| `PushMessageTests.test_liefert_dict_mit_titel_text_level_und_dauer` | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | nie geprüft |
-| `PushMessageTests.test_fehler_in_der_message_bar_wird_abgefangen` | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | nie geprüft |
+| `GetMessageBarTests.test_liefert_objekt_mit_pushmessage_methode` | Prüft, dass _get_message_bar ein Objekt mit aufrufbarer pushMessage()-Methode liefert. | grün | geprüft am 2026-09-23 |
+| `GetMessageBarTests.test_faellt_bei_fehlerhaftem_iface_auf_mock_bar_zurueck` | Prüft, dass ein Fehler beim Zugriff auf iface.messageBar() auf eine funktionierende Mock-MessageBar zurückfällt. | grün | geprüft am 2026-09-23 |
+| `PushMessageTests.test_liefert_dict_mit_titel_text_level_und_dauer` | Prüft, dass push_message im Mock-Modus ein Dict mit den übergebenen Werten liefert. | grün | geprüft am 2026-09-23 |
+| `PushMessageTests.test_fehler_in_der_message_bar_wird_abgefangen` | Prüft, dass eine fehlschlagende MessageBar push_message nicht zum Absturz bringt, sondern None liefert. | grün | geprüft am 2026-09-23 |
+| `MeldungsstufenTests.test_info_warning_error_success_setzen_die_passende_meldungsstufe` | Prüft, dass info, warning, error und success jeweils ihre eigene Qgis.MessageLevel-Stufe setzen und Titel, Text und Dauer weiterreichen. | grün | geprüft am 2026-09-23 |
### `Plugin_SN_Basis/tests/test_navigation.py`
@@ -1267,7 +1269,7 @@ Arbeitsliste: Diese Testfälle haben keinen Docstring; was sie fachlich prüfen,
aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
dann verschwindet er hier von selbst.
-### `sn_basis` – 0 von 344 Testfällen ohne Beschreibung
+### `sn_basis` – 0 von 345 Testfällen ohne Beschreibung
Keine Lücken.
@@ -1473,7 +1475,7 @@ Keine Lücken.
Heuristik, kein Beweis: Diese Funktionen und Methoden kommen unter ihrem Namen in keiner Testdatei des Pakets vor. Das schließt nicht aus, dass sie indirekt über eine andere, getestete Funktion mitlaufen – umgekehrt gilt: Taucht der Name irgendwo in einer Testdatei auf, gilt die Funktion schon als referenziert, auch bei zufälliger Namensgleichheit mit etwas anderem. `main.py`/`__init__.py` (QGIS-Einstiegspunkte wie `classFactory`, `initGui`, `unload`) und Dunder-Methoden sind ausgenommen. Diese Liste ersetzt keine fachliche Prüfung, ob ein Test sinnvoll wäre – dafür braucht es einen Menschen, der die Funktion kennt.
„beabsichtigt“ liest den Docstring der Funktion: Enthält er einen Vermerk wie „von Test abgesehen, weil …“ oder „Test ausgesetzt, zunächst Refactor“, gilt der fehlende Test als bewusste Entscheidung. Alles andere ist „ungeklärt“ – die eigentliche Arbeitsliste.
-### `sn_basis` – 72 von 229 (31 %) ohne Testbezug (0 ungeklärt, 72 beabsichtigt)
+### `sn_basis` – 70 von 229 (31 %) ohne Testbezug (0 ungeklärt, 70 beabsichtigt)
#### `functions/dialog_wrapper.py` (9)
@@ -1487,11 +1489,6 @@ Heuristik, kein Beweis: Diese Funktionen und Methoden kommen unter ihrem Namen i
- `ProgressDialog.raise_to_front` (Zeile 389) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
- `create_progress_dialog` (Zeile 408) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
-#### `functions/message_wrapper.py` (2)
-
-- `info` (Zeile 67) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
-- `success` (Zeile 84) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
-
#### `functions/os_wrapper.py` (5)
- `normalize_path` (Zeile 43) — **beabsichtigt:** von Test abgesehen, weil vernachlässigbar; HD 18.09.2026