Restliche „ungeklärt"-Funktionen in sn_basis abschließend bewerten (Dateipruefer, Datenschreiber, Linkpruefer, Pruefmanager) #70

Closed
opened 2026-09-21 06:41:33 +00:00 by Daniel · 0 comments
Member

Ziel

Die 9 laut Prüfstand als „ungeklärt" geführten sn_basis-Funktionen außerhalb der #67-Liste werden einzeln
entschieden: entweder mit einem Mock-Modus-Test versehen, oder mit einer kurzen Begründung im Docstring als
bewusst nicht getestet markiert. Am Ende steht keine dieser Funktionen mehr ohne Test und ohne Vermerk da.

Betroffen

Plugin: sn_basis
Module/Dateien:

  • modules/Dateipruefer.py (_ist_leer, _handle_leere_eingabe)
  • modules/Datenschreiber.py (_store_style_in_gpkg)
  • modules/linkpruefer.py (_ist_url, _pruefe_url, _pruefe_dateipfad)
  • modules/Pruefmanager.py (_handle_datei_existiert, _handle_verfahrensgebiet_layer_existiert,
    _ask_use_or_replace_pufferlayer)
    Berührt Schnittstellen (docs/architektur/schnittstellen.md)? nein

Fachlicher Hintergrund

Fortsetzung von #63/#65/#67, aber für Funktionen, die dort nicht erfasst wurden (Prüfstand hatte sie zum
jeweiligen Stand nicht oder die Datei war nicht in der Betroffen-Liste). Einzelbefund je Funktion:

  • Dateipruefer._ist_leer: über pruefe() nur mit pfad="" indirekt geprüft. Die im Docstring behaupteten
    Fälle None und reiner Whitespace (" ") sind nicht getestet → echte Lücke, Test sinnvoll.
  • Dateipruefer._handle_leere_eingabe: alle vier Einzel-Aktionen sind über pruefe() mit je einem gesetzten
    Flag abgedeckt, aber die im Docstring behauptete Priorität „leereingabe → Standard → temporär → Fehler" bei
    mehreren gleichzeitig gesetzten Flags ist nirgends geprüft → echte Lücke, Test sinnvoll.
  • Datenschreiber._store_style_in_gpkg: laut #67 „versehentlich in #63 nicht getestet" – eigenständige
    SQLite-Logik (Tabelle anlegen, alten Default-Style zurücksetzen, neuen Stil inkl. Geometriespalte
    einfügen), ohne QGIS lauffähig → Test sinnvoll (deckt damit den in #67 offen gelassenen Punkt ab).
  • Linkpruefer._ist_url / _pruefe_url / _pruefe_dateipfad: alle Verzweigungen (URL ok/Fehler/kein
    Netz, Pfad gefunden/nicht gefunden) sind bereits vollständig über pruefe() in test_linkpruefer.py
    abgedeckt, nur eben nicht mit direktem Funktionsaufruf im Test – kein Zusatztest nötig, nur Vermerk.
  • Pruefmanager._handle_datei_existiert: alle drei Dialog-Antworten plus Nicht-QGIS-Fall sind bereits über
    verarbeite() in test_pruefmanager.py abgedeckt – kein Zusatztest nötig, nur Vermerk.
  • Pruefmanager._handle_verfahrensgebiet_layer_existiert: nur „ergänzen" und „abbrechen" sind getestet,
    „entfernen" und „ersetzen" aus der aktion_map fehlen → echte Lücke, Test sinnvoll.
  • Pruefmanager._ask_use_or_replace_pufferlayer: bereits als toter Code mit garantiertem AttributeError
    in #60 erfasst (self.pruefmanager existiert nie). Kein Test vor der Bugfix-Entscheidung in #60 sinnvoll,
    nur Vermerk mit Verweis auf #60.

Abnahmekriterien

  • Dateipruefer._ist_leer: Test für None, Nicht-String und reinen Whitespace
  • Dateipruefer._handle_leere_eingabe: Test für die Priorität bei mehreren gesetzten Flags
  • Datenschreiber._store_style_in_gpkg: Test für Tabellenerstellung, Default-Reset und Insert
  • Pruefmanager._handle_verfahrensgebiet_layer_existiert: Tests für „entfernen" und „ersetzen"
  • Linkpruefer._ist_url / _pruefe_url / _pruefe_dateipfad, Pruefmanager._handle_datei_existiert,
    Pruefmanager._ask_use_or_replace_pufferlayer: Docstring-Vermerk „von Test abgesehen, weil …"
  • python scripts/testkatalog.py neu erzeugt und mitcommittet, „ungeklärt" für sn_basis auf 0
  • run_tests.py sn_basis --baseline ohne NEU ROT
  • QGIS-Test: nicht nötig, reine Mock-Modus-Logik ohne Qt-Widgets

Nicht Teil dieses Issues

  • Pruefmanager._ask_use_or_replace_pufferlayer selbst reparieren – eigenes Bug-Issue #60.
  • Die 32 Funktionen aus #67 (os_wrapper, qgiscore_wrapper, qgisui_wrapper, DataGrabber, pruef_ergebnis,
    navigation.py, settings_tab.py, print_tab.py) – dort laufendes Issue.
  • Print-Bereich (print_logic.py, print_layout.py, print_layout_baufreigabe.py) – zurückgestellt bis zur
    Grundüberarbeitung.
## Ziel Die 9 laut Prüfstand als „ungeklärt" geführten sn_basis-Funktionen außerhalb der #67-Liste werden einzeln entschieden: entweder mit einem Mock-Modus-Test versehen, oder mit einer kurzen Begründung im Docstring als bewusst nicht getestet markiert. Am Ende steht keine dieser Funktionen mehr ohne Test und ohne Vermerk da. ## Betroffen Plugin: sn_basis Module/Dateien: - `modules/Dateipruefer.py` (`_ist_leer`, `_handle_leere_eingabe`) - `modules/Datenschreiber.py` (`_store_style_in_gpkg`) - `modules/linkpruefer.py` (`_ist_url`, `_pruefe_url`, `_pruefe_dateipfad`) - `modules/Pruefmanager.py` (`_handle_datei_existiert`, `_handle_verfahrensgebiet_layer_existiert`, `_ask_use_or_replace_pufferlayer`) Berührt Schnittstellen (`docs/architektur/schnittstellen.md`)? nein ## Fachlicher Hintergrund Fortsetzung von #63/#65/#67, aber für Funktionen, die dort nicht erfasst wurden (Prüfstand hatte sie zum jeweiligen Stand nicht oder die Datei war nicht in der Betroffen-Liste). Einzelbefund je Funktion: - `Dateipruefer._ist_leer`: über `pruefe()` nur mit `pfad=""` indirekt geprüft. Die im Docstring behaupteten Fälle `None` und reiner Whitespace (`" "`) sind nicht getestet → echte Lücke, Test sinnvoll. - `Dateipruefer._handle_leere_eingabe`: alle vier Einzel-Aktionen sind über `pruefe()` mit je einem gesetzten Flag abgedeckt, aber die im Docstring behauptete Priorität „leereingabe → Standard → temporär → Fehler" bei mehreren gleichzeitig gesetzten Flags ist nirgends geprüft → echte Lücke, Test sinnvoll. - `Datenschreiber._store_style_in_gpkg`: laut #67 „versehentlich in #63 nicht getestet" – eigenständige SQLite-Logik (Tabelle anlegen, alten Default-Style zurücksetzen, neuen Stil inkl. Geometriespalte einfügen), ohne QGIS lauffähig → Test sinnvoll (deckt damit den in #67 offen gelassenen Punkt ab). - `Linkpruefer._ist_url` / `_pruefe_url` / `_pruefe_dateipfad`: alle Verzweigungen (URL ok/Fehler/kein Netz, Pfad gefunden/nicht gefunden) sind bereits vollständig über `pruefe()` in `test_linkpruefer.py` abgedeckt, nur eben nicht mit direktem Funktionsaufruf im Test – kein Zusatztest nötig, nur Vermerk. - `Pruefmanager._handle_datei_existiert`: alle drei Dialog-Antworten plus Nicht-QGIS-Fall sind bereits über `verarbeite()` in `test_pruefmanager.py` abgedeckt – kein Zusatztest nötig, nur Vermerk. - `Pruefmanager._handle_verfahrensgebiet_layer_existiert`: nur „ergänzen" und „abbrechen" sind getestet, „entfernen" und „ersetzen" aus der `aktion_map` fehlen → echte Lücke, Test sinnvoll. - `Pruefmanager._ask_use_or_replace_pufferlayer`: bereits als toter Code mit garantiertem `AttributeError` in #60 erfasst (`self.pruefmanager` existiert nie). Kein Test vor der Bugfix-Entscheidung in #60 sinnvoll, nur Vermerk mit Verweis auf #60. ## Abnahmekriterien - [ ] `Dateipruefer._ist_leer`: Test für `None`, Nicht-String und reinen Whitespace - [ ] `Dateipruefer._handle_leere_eingabe`: Test für die Priorität bei mehreren gesetzten Flags - [ ] `Datenschreiber._store_style_in_gpkg`: Test für Tabellenerstellung, Default-Reset und Insert - [ ] `Pruefmanager._handle_verfahrensgebiet_layer_existiert`: Tests für „entfernen" und „ersetzen" - [ ] `Linkpruefer._ist_url` / `_pruefe_url` / `_pruefe_dateipfad`, `Pruefmanager._handle_datei_existiert`, `Pruefmanager._ask_use_or_replace_pufferlayer`: Docstring-Vermerk „von Test abgesehen, weil …" - [ ] `python scripts/testkatalog.py` neu erzeugt und mitcommittet, „ungeklärt" für sn_basis auf 0 - [ ] `run_tests.py sn_basis --baseline` ohne NEU ROT - [ ] QGIS-Test: nicht nötig, reine Mock-Modus-Logik ohne Qt-Widgets ## Nicht Teil dieses Issues - `Pruefmanager._ask_use_or_replace_pufferlayer` selbst reparieren – eigenes Bug-Issue #60. - Die 32 Funktionen aus #67 (os_wrapper, qgiscore_wrapper, qgisui_wrapper, DataGrabber, pruef_ergebnis, navigation.py, settings_tab.py, print_tab.py) – dort laufendes Issue. - Print-Bereich (`print_logic.py`, `print_layout.py`, `print_layout_baufreigabe.py`) – zurückgestellt bis zur Grundüberarbeitung.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AG_QGIS/Plugin_SN_Basis#70