From f0d7efddf2de556aa10905134fd2224f53754887 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 14 Sep 2026 11:10:51 +0200 Subject: [PATCH] =?UTF-8?q?Fallstricke/Modulkarte/Testkatalog=20um=20sanit?= =?UTF-8?q?ize=5Fbezeichner=20erg=C3=A4nzt=20(#42)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01MneDjzrjmbpQt8udFYxN9e --- docs/architektur/modulkarte.md | 1 + docs/tests/testkatalog.md | 30 ++++++++++++++++++++++++------ docs/wissen/fallstricke.md | 3 +++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/docs/architektur/modulkarte.md b/docs/architektur/modulkarte.md index cf191e3..0bab1bb 100644 --- a/docs/architektur/modulkarte.md +++ b/docs/architektur/modulkarte.md @@ -37,6 +37,7 @@ Legende: ⚠ = über 600 Zeilen, nie komplett laden, per `grep -n "def "` navigi | `functions/sys_wrapper.py` | 106 | `get_plugin_root`, `join_path`, `file_exists`, `read_text`, `add_to_sys_path`, `getattr_safe` | | `functions/landkreise.py` | 48 | Sächsische Landkreise aus `data/landkreise.json` (`LANDKREISE`, `ALLE_LANDKREISE`) | | `functions/laenderkennung.py` | 52 | ALKIS-Länderkennung je Aufrufer-Präfix | +| `functions/text_wrapper.py` | 25 | `sanitize_bezeichner(text, ersatz="_")`: Freitext → Layer-/Dateiname, Umlaute/ß/_/- bleiben erhalten | ### modules/ – Prüfen, Laden, Schreiben, Drucken diff --git a/docs/tests/testkatalog.md b/docs/tests/testkatalog.md index 133d077..7ae53bd 100644 --- a/docs/tests/testkatalog.md +++ b/docs/tests/testkatalog.md @@ -9,17 +9,17 @@ selbst (Docstrings) und aus der Testbaseline. Stand der Baseline: `docs/status/testbaseline.json` (SHA-256 `aeabc946a7f3`) -Gesamt: 3 Pakete, 30 Testdateien, 332 Testfälle – 287 grün, 37 rot (Baseline), 8 übersprungen. -Mit Beschreibung (Docstring): 100 von 332 (30 %). +Gesamt: 3 Pakete, 31 Testdateien, 339 Testfälle – 294 grün, 37 rot (Baseline), 8 übersprungen. +Mit Beschreibung (Docstring): 107 von 339 (32 %). ## Zusammenfassung | Paket | Testdateien | Testfälle | grün | rot (Baseline) | übersprungen | mit Beschreibung | | --- | ---: | ---: | ---: | ---: | ---: | ---: | -| `sn_basis` | 13 | 87 | 87 | 0 | 0 | 0 von 87 (0 %) | +| `sn_basis` | 14 | 94 | 94 | 0 | 0 | 7 von 94 (7 %) | | `sn_verfahrensgebiet` | 12 | 201 | 157 | 36 | 8 | 99 von 201 (49 %) | | `sn_plan41` | 5 | 44 | 43 | 1 | 0 | 1 von 44 (2 %) | -| **Summe** | **30** | **332** | **287** | **37** | **8** | **100 von 332 (30 %)** | +| **Summe** | **31** | **339** | **294** | **37** | **8** | **107 von 339 (32 %)** | ### Legende @@ -31,7 +31,7 @@ Mit Beschreibung (Docstring): 100 von 332 (30 %). ## Paket `sn_basis` -Plattform-Plugin, Ordner `Plugin_SN_Basis` – 13 Testdateien mit 87 Testfällen (87 grün, 0 rot, 0 übersprungen). +Plattform-Plugin, Ordner `Plugin_SN_Basis` – 14 Testdateien mit 94 Testfällen (94 grün, 0 rot, 0 übersprungen). ### `Plugin_SN_Basis/tests/test_bootstrap.py` @@ -225,6 +225,24 @@ Testgruppen: | `TestStilpruefer.test_datei_existiert_falsche_endung` | — (Docstring fehlt) | grün | | `TestStilpruefer.test_datei_existiert_nicht` | — (Docstring fehlt) | grün | +### `Plugin_SN_Basis/tests/test_text_wrapper.py` + +Worum es in der Datei geht: Unit-Tests für `sn_basis.functions.text_wrapper`. + +Testgruppen: + +- `TestSanitizeBezeichner` (7 Testfälle): — (Docstring fehlt) + +| Testfall | prüft | Status | +| --- | --- | --- | +| `TestSanitizeBezeichner.test_umlaute_bleiben_erhalten` | Prüft, dass Umlaute und ß nicht durch den Ersatz entfernt werden. | grün | +| `TestSanitizeBezeichner.test_bindestrich_bleibt_erhalten` | Prüft, dass ein Bindestrich im Bezeichner erhalten bleibt (Issue #42). | grün | +| `TestSanitizeBezeichner.test_unterstrich_bleibt_erhalten` | Prüft, dass ein Unterstrich im Bezeichner erhalten bleibt. | grün | +| `TestSanitizeBezeichner.test_leerzeichen_wird_durch_ersatz_zusammengefasst` | Prüft, dass Leerzeichen (kein zulässiges Zeichen) zu einem Ersatzzeichen werden. | grün | +| `TestSanitizeBezeichner.test_fuehrender_und_folgender_ersatz_wird_entfernt` | Prüft, dass ein Ersatzzeichen am Anfang oder Ende des Ergebnisses entfernt wird. | grün | +| `TestSanitizeBezeichner.test_eigenes_ersatzzeichen_wird_verwendet` | Prüft, dass ein abweichendes Ersatzzeichen anstelle von Unterstrich genutzt wird. | grün | +| `TestSanitizeBezeichner.test_nur_unzulaessige_zeichen_ergibt_leeren_string` | Prüft, dass ein Bezeichner ganz aus unzulässigen Zeichen zu einem leeren String wird. | grün | + ### `Plugin_SN_Basis/tests/test_variable_wrapper.py` Worum es in der Datei geht: — (Docstring fehlt) @@ -736,7 +754,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` – 87 von 87 Testfällen ohne Beschreibung +### `sn_basis` – 87 von 94 Testfällen ohne Beschreibung #### `Plugin_SN_Basis/tests/test_datagrabber.py` (6 von 6) – auch der Modul-Docstring fehlt diff --git a/docs/wissen/fallstricke.md b/docs/wissen/fallstricke.md index 5e96bac..b04b242 100644 --- a/docs/wissen/fallstricke.md +++ b/docs/wissen/fallstricke.md @@ -52,6 +52,9 @@ Kurz, konkret, mit Datum und Quelle. Neue Einträge oben in der passenden Rubrik - **`print()` ist im Code verbreitet**, aber kein Logging. Neue Ausgaben über `message_wrapper` (Nutzer) oder gar nicht; Debug-`print` vor dem PR entfernen. - **Testrunner pro Repo (`tests/run_tests.py`) und Workspace-Runner unterscheiden sich.** Für PR-Nachweise zählt `scripts/run_tests.py --baseline`. - **Tests der Verfahrensgebiet-Suite sind teils veraltet** (erwarten Einzeldatei-/Einzellayer-Schnittstellen vor der Mehrfachauswahl). Vor dem Fixen prüfen, ob der Test oder der Code falsch ist; siehe Baseline. +- **Bezeichner (Layernamen, Dateinamen) nie mit eigenem Regex bereinigen.** `sanitize_bezeichner` aus + `sn_basis.functions.text_wrapper` verwenden – Umlaute, `ß`, `_` und `-` wurden in mehreren KI-generierten + Regexen vergessen (Plugin_SN_Basis #42). ## Zusammenarbeit