Test-Audit sn_basis fortgesetzt: sys_wrapper.py fachlich geprüft (#76)

10 Testfälle nach Freigabe als geprüft markiert: test_sys_wrapper.py komplett
(5 bisher ungeprüfte, davon 1 geschärft, und 5 neue für file_exists und getattr_safe;
get_plugin_root war bereits am 17.09.2026 geprüft). Ein neuer Test hält den Ist-Zustand
fest, dass file_exists auch Verzeichnisse als vorhanden meldet; dazu Issue-Entwurf
„file_exists: Verzeichnis gilt als vorhandene Datei" vorbereitet.

Testkatalog neu erzeugt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 20:25:54 +01:00
co-authored by Claude Opus 5.5
parent c7ecd14d64
commit 04b3657dfe
3 changed files with 88 additions and 30 deletions
+40
View File
@@ -1059,6 +1059,46 @@
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "7a3d7bd800c3" "hash": "7a3d7bd800c3"
}, },
"sn_basis.tests.test_sys_wrapper.EnsureDirTests.test_legt_fehlendes_verzeichnis_inklusive_eltern_an": {
"datum": "2026-10-26",
"hash": "dada5d5e45b9"
},
"sn_basis.tests.test_sys_wrapper.EnsureDirTests.test_vorhandenes_verzeichnis_wirft_keinen_fehler": {
"datum": "2026-10-26",
"hash": "923d99e4edf3"
},
"sn_basis.tests.test_sys_wrapper.FileExistsTests.test_fehlende_datei_liefert_false": {
"datum": "2026-10-26",
"hash": "455c81b667df"
},
"sn_basis.tests.test_sys_wrapper.FileExistsTests.test_ungueltiger_pfad_liefert_false_statt_ausnahme": {
"datum": "2026-10-26",
"hash": "b2baf1004522"
},
"sn_basis.tests.test_sys_wrapper.FileExistsTests.test_verzeichnis_gilt_derzeit_als_vorhandene_datei": {
"datum": "2026-10-26",
"hash": "8e791a249d44"
},
"sn_basis.tests.test_sys_wrapper.FileExistsTests.test_vorhandene_datei_liefert_true": {
"datum": "2026-10-26",
"hash": "914d1ed618fd"
},
"sn_basis.tests.test_sys_wrapper.GetattrSafeTests.test_liefert_default_bei_fehlendem_attribut": {
"datum": "2026-10-26",
"hash": "bfcc23ca76f3"
},
"sn_basis.tests.test_sys_wrapper.GetattrSafeTests.test_liefert_default_wenn_attributzugriff_andere_ausnahme_wirft": {
"datum": "2026-10-26",
"hash": "6a2e61b48bbc"
},
"sn_basis.tests.test_sys_wrapper.GetattrSafeTests.test_liefert_vorhandenes_attribut": {
"datum": "2026-10-26",
"hash": "1ab2ddfc9d4f"
},
"sn_basis.tests.test_sys_wrapper.JoinPathTests.test_verbindet_mehrere_pfadbestandteile": {
"datum": "2026-10-26",
"hash": "5954b3f27357"
},
"sn_basis.tests.test_sys_wrapper.TestGetPluginRoot.test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung": { "sn_basis.tests.test_sys_wrapper.TestGetPluginRoot.test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung": {
"datum": "2026-09-17", "datum": "2026-09-17",
"hash": "c9b434520d62" "hash": "c9b434520d62"
File diff suppressed because one or more lines are too long
+20 -14
View File
@@ -8,21 +8,21 @@ für die fachliche Frage, ob die Abdeckung sinnvoll ist. Die Angaben stammen aus
selbst (Docstrings) und aus der Testbaseline. selbst (Docstrings) und aus der Testbaseline.
Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`) Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`)
Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `119f79e142a0`) Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `925d01586dbc`)
Gesamt: 3 Pakete, 55 Testdateien, 691 Testfälle – 648 grün, 35 rot (Baseline), 8 übersprungen. Gesamt: 3 Pakete, 55 Testdateien, 696 Testfälle – 653 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 546 von 691 (79 %). Mit Beschreibung (Docstring): 551 von 696 (79 %).
Fachlich geprüft: 266 von 691 (38 %) aktuell, 0 veraltet seit Codeänderung, 425 nie geprüft. Fachlich geprüft: 276 von 696 (40 %) aktuell, 0 veraltet seit Codeänderung, 420 nie geprüft.
Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“. Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktionen/Methoden ohne erkennbaren Testbezug – Abschnitt „Ungetestete Funktionen“.
## Zusammenfassung ## Zusammenfassung
| Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug | | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | fachlich geprüft | ohne Testbezug |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| `sn_basis` | 32 | 358 | 358 | 0 | 0 | 358 von 358 (100 %) | 266 von 358 (74 %) | 70 von 229 (31 %) | | `sn_basis` | 32 | 363 | 363 | 0 | 0 | 363 von 363 (100 %) | 276 von 363 (76 %) | 70 von 229 (31 %) |
| `sn_verfahrensgebiet` | 18 | 289 | 247 | 34 | 8 | 187 von 289 (65 %) | 0 von 289 (0 %) | 51 von 161 (32 %) | | `sn_verfahrensgebiet` | 18 | 289 | 247 | 34 | 8 | 187 von 289 (65 %) | 0 von 289 (0 %) | 51 von 161 (32 %) |
| `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) | | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | 0 von 44 (0 %) | 39 von 80 (49 %) |
| **Summe** | **55** | **691** | **648** | **35** | **8** | **546 von 691 (79 %)** | **266 von 691 (38 %)** | **160 von 470 (34 %)** | | **Summe** | **55** | **696** | **653** | **35** | **8** | **551 von 696 (79 %)** | **276 von 696 (40 %)** | **160 von 470 (34 %)** |
### Legende ### Legende
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktione
## Paket `sn_basis` ## Paket `sn_basis`
Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 358 Testfällen (358 grün, 0 rot, 0 übersprungen). Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 363 Testfällen (363 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py` ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -722,17 +722,23 @@ Testgruppen:
- `TestGetPluginRoot` (1 Testfälle): — (Docstring fehlt) - `TestGetPluginRoot` (1 Testfälle): — (Docstring fehlt)
- `JoinPathTests` (1 Testfälle): — (Docstring fehlt) - `JoinPathTests` (1 Testfälle): — (Docstring fehlt)
- `FileExistsTests` (4 Testfälle): — (Docstring fehlt)
- `EnsureDirTests` (2 Testfälle): — (Docstring fehlt) - `EnsureDirTests` (2 Testfälle): — (Docstring fehlt)
- `GetattrSafeTests` (2 Testfälle): — (Docstring fehlt) - `GetattrSafeTests` (3 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft | | Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `TestGetPluginRoot.test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung` | Prüft, dass get_plugin_root() bei einem über eine Verzeichnisverknüpfung (wie von link_qgis_profile.py angelegt) erreichten Modul den verlinkten Pfad liefert, statt zum echten Zielverzeichnis aufzulösen (Verfahrensgebiet #50). | grün | geprüft am 2026-09-17 | | `TestGetPluginRoot.test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung` | Prüft, dass get_plugin_root() bei einem über eine Verzeichnisverknüpfung (wie von link_qgis_profile.py angelegt) erreichten Modul den verlinkten Pfad liefert, statt zum echten Zielverzeichnis aufzulösen (Verfahrensgebiet #50). | grün | geprüft am 2026-09-17 |
| `JoinPathTests.test_verbindet_mehrere_pfadbestandteile` | Prüft, dass join_path mehrere Bestandteile OS-sicher zu einem Path zusammenfügt. | grün | nie geprüft | | `JoinPathTests.test_verbindet_mehrere_pfadbestandteile` | Prüft, dass join_path mehrere Bestandteile OS-sicher zu einem Path zusammenfügt. | grün | geprüft am 2026-10-26 |
| `EnsureDirTests.test_legt_fehlendes_verzeichnis_inklusive_eltern_an` | Prüft, dass ensure_dir ein fehlendes Verzeichnis samt Elternverzeichnissen anlegt. | grün | nie geprüft | | `FileExistsTests.test_vorhandene_datei_liefert_true` | Prüft, dass file_exists für eine vorhandene Datei True liefert. | grün | geprüft am 2026-10-26 |
| `EnsureDirTests.test_vorhandenes_verzeichnis_wirft_keinen_fehler` | Prüft, dass ensure_dir bei einem bereits vorhandenen Verzeichnis keinen Fehler wirft. | grün | nie geprüft | | `FileExistsTests.test_fehlende_datei_liefert_false` | Prüft, dass file_exists für eine nicht vorhandene Datei False liefert. | grün | geprüft am 2026-10-26 |
| `GetattrSafeTests.test_liefert_vorhandenes_attribut` | Prüft, dass getattr_safe ein vorhandenes Attribut liefert. | grün | nie geprüft | | `FileExistsTests.test_ungueltiger_pfad_liefert_false_statt_ausnahme` | Prüft, dass file_exists für einen ungültigen Pfad (Nullzeichen) False liefert, statt eine Ausnahme zu werfen. | grün | geprüft am 2026-10-26 |
| `GetattrSafeTests.test_liefert_default_bei_fehlendem_attribut` | Prüft, dass getattr_safe bei fehlendem Attribut den Default-Wert liefert. | grün | nie geprüft | | `FileExistsTests.test_verzeichnis_gilt_derzeit_als_vorhandene_datei` | Prüft, dass file_exists derzeit auch für ein Verzeichnis True liefert (Ist-Zustand, nicht bestätigt gewünscht). | grün | geprüft am 2026-10-26 |
| `EnsureDirTests.test_legt_fehlendes_verzeichnis_inklusive_eltern_an` | Prüft, dass ensure_dir ein fehlendes Verzeichnis samt Elternverzeichnissen anlegt. | grün | geprüft am 2026-10-26 |
| `EnsureDirTests.test_vorhandenes_verzeichnis_wirft_keinen_fehler` | Prüft, dass ensure_dir bei einem bereits vorhandenen Verzeichnis keinen Fehler wirft und den Pfad liefert. | grün | geprüft am 2026-10-26 |
| `GetattrSafeTests.test_liefert_vorhandenes_attribut` | Prüft, dass getattr_safe ein vorhandenes Attribut liefert. | grün | geprüft am 2026-10-26 |
| `GetattrSafeTests.test_liefert_default_bei_fehlendem_attribut` | Prüft, dass getattr_safe bei fehlendem Attribut den Default-Wert liefert. | grün | geprüft am 2026-10-26 |
| `GetattrSafeTests.test_liefert_default_wenn_attributzugriff_andere_ausnahme_wirft` | Prüft, dass getattr_safe auch bei einer anderen Ausnahme als AttributeError den Default-Wert liefert. | grün | geprüft am 2026-10-26 |
### `Plugin_SN_Basis/tests/test_text_wrapper.py` ### `Plugin_SN_Basis/tests/test_text_wrapper.py`
@@ -1443,7 +1449,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, aus dem Quelltext erschließen. Jeder Eintrag braucht eine einzeilige Beschreibung im Testfall,
dann verschwindet er hier von selbst. dann verschwindet er hier von selbst.
### `sn_basis` – 0 von 358 Testfällen ohne Beschreibung ### `sn_basis` – 0 von 363 Testfällen ohne Beschreibung
Keine Lücken. Keine Lücken.