Unit-Tests für `sn_basis.functions.text_wrapper`.
TestSanitizeBezeichner 7
flowchart TD
root(["test_text_wrapper.py"])
class root rootnode
root --> g1["TestSanitizeBezeichner (7)"]
diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md
index 0df1da7..b4789f4 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 `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.
-Mit Beschreibung (Docstring): 546 von 691 (79 %).
-Fachlich geprüft: 266 von 691 (38 %) aktuell, 0 veraltet seit Codeänderung, 425 nie geprüft.
+Gesamt: 3 Pakete, 55 Testdateien, 696 Testfälle – 653 grün, 35 rot (Baseline), 8 übersprungen.
+Mit Beschreibung (Docstring): 551 von 696 (79 %).
+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“.
## Zusammenfassung
| 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_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
@@ -36,7 +36,7 @@ Strukturelle Lücken (heuristisch, Namensabgleich): 160 von 470 (34 %) Funktione
## 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`
@@ -722,17 +722,23 @@ Testgruppen:
- `TestGetPluginRoot` (1 Testfälle): — (Docstring fehlt)
- `JoinPathTests` (1 Testfälle): — (Docstring fehlt)
+- `FileExistsTests` (4 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 |
| --- | --- | --- | --- |
| `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 |
-| `EnsureDirTests.test_legt_fehlendes_verzeichnis_inklusive_eltern_an` | Prüft, dass ensure_dir ein fehlendes Verzeichnis samt Elternverzeichnissen anlegt. | grün | nie geprüft |
-| `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 |
-| `GetattrSafeTests.test_liefert_vorhandenes_attribut` | Prüft, dass getattr_safe ein vorhandenes Attribut liefert. | grün | nie geprüft |
-| `GetattrSafeTests.test_liefert_default_bei_fehlendem_attribut` | Prüft, dass getattr_safe bei fehlendem Attribut den Default-Wert liefert. | 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 |
+| `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 |
+| `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 |
+| `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 |
+| `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`
@@ -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,
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.