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

7 Testfälle nach Freigabe als geprüft markiert: test_variable_wrapper.py komplett
(6 bestehende, davon 3 über das geschärfte Test-Double und 1 zusätzlich im Rückfall
geschärft, und 1 neuer für get_variable im Projekt-Scope). Keine Nebenbefunde.

Testkatalog neu erzeugt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 20:40:24 +01:00
co-authored by Claude Opus 5.5
parent 292863e5e7
commit 851287a0e1
3 changed files with 59 additions and 28 deletions
+28
View File
@@ -1130,5 +1130,33 @@
"sn_basis.tests.test_text_wrapper.TestSanitizeBezeichner.test_unterstrich_bleibt_erhalten": { "sn_basis.tests.test_text_wrapper.TestSanitizeBezeichner.test_unterstrich_bleibt_erhalten": {
"datum": "2026-10-26", "datum": "2026-10-26",
"hash": "9ff48d7734c8" "hash": "9ff48d7734c8"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_get_variable_global_returns_empty_string_fallback": {
"datum": "2026-10-26",
"hash": "888893cd08a8"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_get_variable_invalid_scope_raises": {
"datum": "2026-10-26",
"hash": "2d3d3ca3c7c8"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_get_variable_project_liest_praefixierten_namen": {
"datum": "2026-10-26",
"hash": "dc2dc0f29a63"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_set_variable_global_writes_prefixed_name": {
"datum": "2026-10-26",
"hash": "d3626328d7e6"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_set_variable_invalid_scope_raises": {
"datum": "2026-10-26",
"hash": "c3df384c4f9e"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_set_variable_project_changed_value_is_written": {
"datum": "2026-10-26",
"hash": "391705a9f6d2"
},
"sn_basis.tests.test_variable_wrapper.TestVariableWrapper.test_set_variable_project_noop_write_is_skipped": {
"datum": "2026-10-26",
"hash": "38ee0f7ec99b"
} }
} }
+15 -13
View File
@@ -123,24 +123,24 @@
<div class="topbar"><div class="brand"><h1>Prüfstand</h1> <div class="topbar"><div class="brand"><h1>Prüfstand</h1>
<span class="tagline">Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.</span></div> <span class="tagline">Testkatalog der sn_*-Plugins — was die Suite heute prüft, auf einen Blick.</span></div>
<div class="meta-line">Quelle: <b>docs/tests/testkatalog.md</b><br>Baseline: <span class="mono">docs/status/testbaseline.json</span> (SHA-256 aeabc946a7f3)<br>Prüf-Audit: <span class="mono">docs/status/testpruefungen.json</span> (SHA-256 92b94e7ed46e)</div></div> <div class="meta-line">Quelle: <b>docs/tests/testkatalog.md</b><br>Baseline: <span class="mono">docs/status/testbaseline.json</span> (SHA-256 aeabc946a7f3)<br>Prüf-Audit: <span class="mono">docs/status/testpruefungen.json</span> (SHA-256 b5c66dc5bdb2)</div></div>
<div class="summary"> <div class="summary">
<div class="stat"><span class="n">696</span><span class="l">Testfälle</span></div> <div class="stat"><span class="n">697</span><span class="l">Testfälle</span></div>
<div class="stat ok"><span class="n">653</span><span class="l">grün</span></div> <div class="stat ok"><span class="n">654</span><span class="l">grün</span></div>
<div class="stat warn"><span class="n">35</span><span class="l">rot (Baseline)</span></div> <div class="stat warn"><span class="n">35</span><span class="l">rot (Baseline)</span></div>
<div class="stat skip"><span class="n">8</span><span class="l">übersprungen</span></div> <div class="stat skip"><span class="n">8</span><span class="l">übersprungen</span></div>
<div class="stat"><span class="n">79%</span><span class="l">mit Docstring</span></div> <div class="stat"><span class="n">79%</span><span class="l">mit Docstring</span></div>
<div class="stat"><span class="n">41%</span><span class="l">aktuell geprüft</span></div> <div class="stat"><span class="n">42%</span><span class="l">aktuell geprüft</span></div>
<div class="stat"><span class="n">55</span><span class="l">Testdateien</span></div> <div class="stat"><span class="n">55</span><span class="l">Testdateien</span></div>
<div class="stat warn"><span class="n">34%</span><span class="l">ohne Testbezug</span></div> <div class="stat warn"><span class="n">34%</span><span class="l">ohne Testbezug</span></div>
</div> </div>
<div class="pkg-bars"><div class="pkg-bars-title">Verteilung je Paket</div> <div class="pkg-bars"><div class="pkg-bars-title">Verteilung je Paket</div>
<div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="363 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">32 Dateien · 363 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_basis</span><span class="minibar" role="img" aria-label="364 grün, 0 rot, 0 übersprungen"><span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">32 Dateien · 364 Testfälle</span></div>
<div class="pkg-bar-row"><span class="name">sn_verfahrensgebiet</span><span class="minibar" role="img" aria-label="247 grün, 34 rot, 8 übersprungen"><span class="seg seg-ok" style="width:85%"></span><span class="seg seg-warn" style="width:12%"></span><span class="seg seg-skip" style="width:3%"></span></span><span class="count">18 Dateien · 289 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_verfahrensgebiet</span><span class="minibar" role="img" aria-label="247 grün, 34 rot, 8 übersprungen"><span class="seg seg-ok" style="width:85%"></span><span class="seg seg-warn" style="width:12%"></span><span class="seg seg-skip" style="width:3%"></span></span><span class="count">18 Dateien · 289 Testfälle</span></div>
<div class="pkg-bar-row"><span class="name">sn_plan41</span><span class="minibar" role="img" aria-label="43 grün, 1 rot, 0 übersprungen"><span class="seg seg-ok" style="width:98%"></span><span class="seg seg-warn" style="width:2%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">5 Dateien · 44 Testfälle</span></div> <div class="pkg-bar-row"><span class="name">sn_plan41</span><span class="minibar" role="img" aria-label="43 grün, 1 rot, 0 übersprungen"><span class="seg seg-ok" style="width:98%"></span><span class="seg seg-warn" style="width:2%"></span><span class="seg seg-skip" style="width:0%"></span></span><span class="count">5 Dateien · 44 Testfälle</span></div>
</div> </div>
<div class="controls"><nav class="nav-links"> <div class="controls"><nav class="nav-links">
<a href="#pkg-sn_basis">sn_basis <span class="mono">(363)</span></a> <a href="#pkg-sn_basis">sn_basis <span class="mono">(364)</span></a>
<a href="#pkg-sn_verfahrensgebiet">sn_verfahrensgebiet <span class="mono">(289)</span></a> <a href="#pkg-sn_verfahrensgebiet">sn_verfahrensgebiet <span class="mono">(289)</span></a>
<a href="#pkg-sn_plan41">sn_plan41 <span class="mono">(44)</span></a> <a href="#pkg-sn_plan41">sn_plan41 <span class="mono">(44)</span></a>
</nav><div class="filters"> </nav><div class="filters">
@@ -159,11 +159,11 @@
<h2>sn_basis</h2> <h2>sn_basis</h2>
<p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span></p> <p class="pkg-sub">Plattform-Plugin · Ordner <span class="mono">Plugin_SN_Basis</span></p>
</div> </div>
<div class="pkg-bar" role="img" aria-label="363 grün, 0 rot, 0 übersprungen"> <div class="pkg-bar" role="img" aria-label="364 grün, 0 rot, 0 übersprungen">
<span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span> <span class="seg seg-ok" style="width:100%"></span><span class="seg seg-warn" style="width:0%"></span><span class="seg seg-skip" style="width:0%"></span>
</div> </div>
</div> </div>
<div class="pkg-summary"><div class="stat stat-sm"><span class="n">32</span><span class="l">Testdateien</span></div><div class="stat stat-sm"><span class="n">363</span><span class="l">Testfälle</span></div><div class="stat stat-sm ok"><span class="n">363</span><span class="l">grün</span></div><div class="stat stat-sm warn"><span class="n">0</span><span class="l">rot (Baseline)</span></div><div class="stat stat-sm skip"><span class="n">0</span><span class="l">übersprungen</span></div><div class="stat stat-sm"><span class="n">100%</span><span class="l">mit Docstring</span></div><div class="stat stat-sm"><span class="n">78%</span><span class="l">geprüft</span></div><div class="stat stat-sm"><span class="n">70</span><span class="l">ohne Testbezug</span></div></div> <div class="pkg-summary"><div class="stat stat-sm"><span class="n">32</span><span class="l">Testdateien</span></div><div class="stat stat-sm"><span class="n">364</span><span class="l">Testfälle</span></div><div class="stat stat-sm ok"><span class="n">364</span><span class="l">grün</span></div><div class="stat stat-sm warn"><span class="n">0</span><span class="l">rot (Baseline)</span></div><div class="stat stat-sm skip"><span class="n">0</span><span class="l">übersprungen</span></div><div class="stat stat-sm"><span class="n">100%</span><span class="l">mit Docstring</span></div><div class="stat stat-sm"><span class="n">80%</span><span class="l">geprüft</span></div><div class="stat stat-sm"><span class="n">70</span><span class="l">ohne Testbezug</span></div></div>
<div class="card-grid"><article class="filecard" data-search="plugin_sn_basis/tests/test_base_dockwidget.py closeeventtests test_ruft_cleanup_aller_tabs_auf closeeventtests test_ignoriert_tabs_ohne_cleanup closeeventtests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter closeeventtests test_setzt_toolbar_action_zurueck closeeventtests test_ohne_action_wird_nichts_zurueckgesetzt" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-base-dockwidget-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_base_dockwidget.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-base-dockwidget-py"><p class="filedesc">Tests für sn_basis/ui/base_dockwidget.py::closeEvent (Issue #65).</p><div class="gchips"><span class="gchip" title="">CloseEventTests <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD <div class="card-grid"><article class="filecard" data-search="plugin_sn_basis/tests/test_base_dockwidget.py closeeventtests test_ruft_cleanup_aller_tabs_auf closeeventtests test_ignoriert_tabs_ohne_cleanup closeeventtests test_fehler_in_cleanup_wird_abgefangen_und_andere_tabs_laufen_weiter closeeventtests test_setzt_toolbar_action_zurueck closeeventtests test_ohne_action_wird_nichts_zurueckgesetzt" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-base-dockwidget-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_base_dockwidget.py</span><span class="card-meta"><span class="count-total">5 Testfälle</span><span class="cpill cpill-ok">5</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-base-dockwidget-py"><p class="filedesc">Tests für sn_basis/ui/base_dockwidget.py::closeEvent (Issue #65).</p><div class="gchips"><span class="gchip" title="">CloseEventTests <b>5</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_base_dockwidget.py&quot;]) root([&quot;test_base_dockwidget.py&quot;])
class root rootnode class root rootnode
@@ -1215,28 +1215,30 @@
classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420; classDef groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_umlaute_bleiben_erhalten</span></td><td>Prüft, dass alle Umlaute (klein und groß) und ß nicht durch den Ersatz entfernt werden.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_bindestrich_bleibt_erhalten</span></td><td>Prüft, dass ein Bindestrich im Bezeichner erhalten bleibt (Issue #42).</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_unterstrich_bleibt_erhalten</span></td><td>Prüft, dass ein Unterstrich im Bezeichner erhalten bleibt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_leerzeichen_wird_durch_ersatz_zusammengefasst</span></td><td>Prüft, dass eine Folge unzulässiger Zeichen (hier zwei Leerzeichen) zu genau einem Ersatzzeichen zusammengefasst wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_fuehrender_und_folgender_ersatz_wird_entfernt</span></td><td>Prüft, dass ein Ersatzzeichen am Anfang oder Ende des Ergebnisses entfernt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_eigenes_ersatzzeichen_wird_verwendet</span></td><td>Prüft, dass ein abweichendes Ersatzzeichen anstelle von Unterstrich genutzt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_nur_unzulaessige_zeichen_ergibt_leeren_string</span></td><td>Prüft, dass ein Bezeichner ganz aus unzulässigen Zeichen zu einem leeren String wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_variable_wrapper.py testvariablewrapper test_set_variable_project_noop_write_is_skipped testvariablewrapper test_set_variable_project_changed_value_is_written testvariablewrapper test_set_variable_global_writes_prefixed_name testvariablewrapper test_get_variable_global_returns_empty_string_fallback testvariablewrapper test_get_variable_invalid_scope_raises testvariablewrapper test_set_variable_invalid_scope_raises" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="1" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-variable-wrapper-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_variable_wrapper.py</span><span class="card-meta"><span class="count-total">6 Testfälle</span><span class="cpill cpill-ok">6</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">0% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-variable-wrapper-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestVariableWrapper <b>6</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_umlaute_bleiben_erhalten</span></td><td>Prüft, dass alle Umlaute (klein und groß) und ß nicht durch den Ersatz entfernt werden.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_bindestrich_bleibt_erhalten</span></td><td>Prüft, dass ein Bindestrich im Bezeichner erhalten bleibt (Issue #42).</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_unterstrich_bleibt_erhalten</span></td><td>Prüft, dass ein Unterstrich im Bezeichner erhalten bleibt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_leerzeichen_wird_durch_ersatz_zusammengefasst</span></td><td>Prüft, dass eine Folge unzulässiger Zeichen (hier zwei Leerzeichen) zu genau einem Ersatzzeichen zusammengefasst wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_fuehrender_und_folgender_ersatz_wird_entfernt</span></td><td>Prüft, dass ein Ersatzzeichen am Anfang oder Ende des Ergebnisses entfernt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_eigenes_ersatzzeichen_wird_verwendet</span></td><td>Prüft, dass ein abweichendes Ersatzzeichen anstelle von Unterstrich genutzt wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestSanitizeBezeichner<br><span class="testname">test_nur_unzulaessige_zeichen_ergibt_leeren_string</span></td><td>Prüft, dass ein Bezeichner ganz aus unzulässigen Zeichen zu einem leeren String wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_variable_wrapper.py testvariablewrapper test_set_variable_project_noop_write_is_skipped testvariablewrapper test_set_variable_project_changed_value_is_written testvariablewrapper test_set_variable_global_writes_prefixed_name testvariablewrapper test_get_variable_global_returns_empty_string_fallback testvariablewrapper test_get_variable_project_liest_praefixierten_namen testvariablewrapper test_get_variable_invalid_scope_raises testvariablewrapper test_set_variable_invalid_scope_raises" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="0" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-variable-wrapper-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_variable_wrapper.py</span><span class="card-meta"><span class="count-total">7 Testfälle</span><span class="cpill cpill-ok">7</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">100% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-variable-wrapper-py"><p class="filedesc">— (Docstring fehlt)</p><div class="gchips"><span class="gchip" title="">TestVariableWrapper <b>7</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_variable_wrapper.py&quot;]) root([&quot;test_variable_wrapper.py&quot;])
class root rootnode class root rootnode
root --&gt; g1[&quot;TestVariableWrapper (6)&quot;] root --&gt; g1[&quot;TestVariableWrapper (7)&quot;]
class g1 groupnode class g1 groupnode
g1 --&gt; t1(&quot;set_variable_project_noop_write_is_skipped&quot;) g1 --&gt; t1(&quot;set_variable_project_noop_write_is_skipped&quot;)
g1 --&gt; t2(&quot;set_variable_project_changed_value_is_written&quot;) g1 --&gt; t2(&quot;set_variable_project_changed_value_is_written&quot;)
g1 --&gt; t3(&quot;set_variable_global_writes_prefixed_name&quot;) g1 --&gt; t3(&quot;set_variable_global_writes_prefixed_name&quot;)
g1 --&gt; t4(&quot;get_variable_global_returns_empty_string_fallback&quot;) g1 --&gt; t4(&quot;get_variable_global_returns_empty_string_fallback&quot;)
g1 --&gt; t5(&quot;get_variable_invalid_scope_raises&quot;) g1 --&gt; t5(&quot;get_variable_project_liest_praefixierten_namen&quot;)
g1 --&gt; t6(&quot;set_variable_invalid_scope_raises&quot;) g1 --&gt; t6(&quot;get_variable_invalid_scope_raises&quot;)
g1 --&gt; t7(&quot;set_variable_invalid_scope_raises&quot;)
class t1 ok class t1 ok
class t2 ok class t2 ok
class t3 ok class t3 ok
class t4 ok class t4 ok
class t5 ok class t5 ok
class t6 ok class t6 ok
class t7 ok
classDef rootnode fill:#1f4038,stroke:#16302a,stroke-width:1px,color:#f4f1e8,font-weight:600; 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 groupnode fill:#cfe0da,stroke:#5c8a7d,stroke-width:1px,color:#152420;
classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20; classDef ok fill:#dcefdc,stroke:#3f7d4a,stroke-width:1px,color:#1c3a20;
classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08; classDef warn fill:#f6ead9,stroke:#b5722a,stroke-width:1px,color:#4a2c08;
classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_project_noop_write_is_skipped</span></td><td>Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_project_changed_value_is_written</span></td><td>Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix &#x27;sn_&#x27; geschrieben wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_global_writes_prefixed_name</span></td><td>Prüft, dass set_variable() im globalen Scope den Variablennamen mit &#x27;sn_&#x27; vorangestellt schreibt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_get_variable_global_returns_empty_string_fallback</span></td><td>Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_get_variable_invalid_scope_raises</span></td><td>Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_invalid_scope_raises</span></td><td>Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-skip">nie geprüft</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_verfahrensgebiet_manager.py testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_value testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value testverfahrensgebietmanager test_set_verfahrensgebiet_layer_id_writes_project_variable testverfahrensgebietmanager test_update_without_layer_does_not_write_when_already_empty testverfahrensgebietmanager test_update_with_layer_writes_variable onhandlertests test_on_project_changed_ohne_layer_setzt_variable_leer onhandlertests test_on_project_changed_mit_layer_setzt_variable onhandlertests test_on_layers_added_findet_neuen_layer onhandlertests test_on_layer_removed_bei_aktuellem_layer_sucht_neu onhandlertests test_on_layer_removed_bei_anderem_layer_aendert_nichts listenersetuptests test_setup_ohne_qgis_tut_nichts listenersetuptests test_setup_verbindet_signale_und_ist_idempotent listenersetuptests test_teardown_trennt_alle_signale_und_ist_idempotent" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="1" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-verfahrensgebiet-manager-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py</span><span class="card-meta"><span class="count-total">13 Testfälle</span><span class="cpill cpill-ok">13</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">0% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-verfahrensgebiet-manager-py"><p class="filedesc">Tests für sn_basis/functions/verfahrensgebiet_manager.py (zentrale Layer-Verfolgung, Issue #65).</p><div class="gchips"><span class="gchip" title="">TestVerfahrensgebietManager <b>5</b></span><span class="gchip" title="">OnHandlerTests <b>5</b></span><span class="gchip" title="">ListenerSetupTests <b>3</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD classDef skip fill:#e6e6ee,stroke:#6f7285,stroke-width:1px,color:#2b2d38;</pre></div><table class="test-table"><thead><tr><th>Testfall</th><th>prüft</th><th>Status</th><th>geprüft</th></tr></thead><tbody><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_project_noop_write_is_skipped</span></td><td>Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_project_changed_value_is_written</span></td><td>Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix &#x27;sn_&#x27; geschrieben wird.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_global_writes_prefixed_name</span></td><td>Prüft, dass set_variable() im globalen Scope den Variablennamen mit &#x27;sn_&#x27; vorangestellt schreibt.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_get_variable_global_returns_empty_string_fallback</span></td><td>Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String statt None liefert.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_get_variable_project_liest_praefixierten_namen</span></td><td>Prüft, dass get_variable() im Projekt-Scope den Namen mit &#x27;sn_&#x27; aus dem Scope des aktuellen Projekts liest.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_get_variable_invalid_scope_raises</span></td><td>Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr><tr><td class="mono">TestVariableWrapper<br><span class="testname">test_set_variable_invalid_scope_raises</span></td><td>Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst.</td><td><span class="pill pill-ok">grün</span></td><td><span class="pill pill-pr-ok">geprüft am 2026-10-26</span></td></tr></tbody></table></div></article><article class="filecard" data-search="plugin_sn_basis/tests/test_verfahrensgebiet_manager.py testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_value testverfahrensgebietmanager test_get_verfahrensgebiet_layer_id_returns_none_for_empty_value testverfahrensgebietmanager test_set_verfahrensgebiet_layer_id_writes_project_variable testverfahrensgebietmanager test_update_without_layer_does_not_write_when_already_empty testverfahrensgebietmanager test_update_with_layer_writes_variable onhandlertests test_on_project_changed_ohne_layer_setzt_variable_leer onhandlertests test_on_project_changed_mit_layer_setzt_variable onhandlertests test_on_layers_added_findet_neuen_layer onhandlertests test_on_layer_removed_bei_aktuellem_layer_sucht_neu onhandlertests test_on_layer_removed_bei_anderem_layer_aendert_nichts listenersetuptests test_setup_ohne_qgis_tut_nichts listenersetuptests test_setup_verbindet_signale_und_ist_idempotent listenersetuptests test_teardown_trennt_alle_signale_und_ist_idempotent" data-hasred="0" data-hasskip="0" data-nodoc="0" data-ungeprueft="1" data-veraltet="0"><button class="card-toggle" data-target="plugin-sn-basis-tests-test-verfahrensgebiet-manager-py" aria-expanded="false"><span class="card-path mono">Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py</span><span class="card-meta"><span class="count-total">13 Testfälle</span><span class="cpill cpill-ok">13</span><span class="docbadge" title="Anteil mit Docstring">100% beschrieben</span><span class="auditbadge" title="Anteil fachlich aktuell geprüft">0% geprüft</span><span class="chev" aria-hidden="true">▾</span></span></button><div class="card-body" id="body-plugin-sn-basis-tests-test-verfahrensgebiet-manager-py"><p class="filedesc">Tests für sn_basis/functions/verfahrensgebiet_manager.py (zentrale Layer-Verfolgung, Issue #65).</p><div class="gchips"><span class="gchip" title="">TestVerfahrensgebietManager <b>5</b></span><span class="gchip" title="">OnHandlerTests <b>5</b></span><span class="gchip" title="">ListenerSetupTests <b>3</b></span></div><div class="diagram-wrap"><pre class="mermaid">flowchart TD
root([&quot;test_verfahrensgebiet_manager.py&quot;]) root([&quot;test_verfahrensgebiet_manager.py&quot;])
class root rootnode class root rootnode
root --&gt; g1[&quot;TestVerfahrensgebietManager (5)&quot;] root --&gt; g1[&quot;TestVerfahrensgebietManager (5)&quot;]
+16 -15
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 `92b94e7ed46e`) Stand des Prüf-Audits: `docs/status/testpruefungen.json` (SHA-256 `b5c66dc5bdb2`)
Gesamt: 3 Pakete, 55 Testdateien, 696 Testfälle – 653 grün, 35 rot (Baseline), 8 übersprungen. Gesamt: 3 Pakete, 55 Testdateien, 697 Testfälle – 654 grün, 35 rot (Baseline), 8 übersprungen.
Mit Beschreibung (Docstring): 551 von 696 (79 %). Mit Beschreibung (Docstring): 552 von 697 (79 %).
Fachlich geprüft: 283 von 696 (41 %) aktuell, 0 veraltet seit Codeänderung, 413 nie geprüft. Fachlich geprüft: 290 von 697 (42 %) aktuell, 0 veraltet seit Codeänderung, 407 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 | 363 | 363 | 0 | 0 | 363 von 363 (100 %) | 283 von 363 (78 %) | 70 von 229 (31 %) | | `sn_basis` | 32 | 364 | 364 | 0 | 0 | 364 von 364 (100 %) | 290 von 364 (80 %) | 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** | **696** | **653** | **35** | **8** | **551 von 696 (79 %)** | **283 von 696 (41 %)** | **160 von 470 (34 %)** | | **Summe** | **55** | **697** | **654** | **35** | **8** | **552 von 697 (79 %)** | **290 von 697 (42 %)** | **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 363 Testfällen (363 grün, 0 rot, 0 übersprungen). Plattform-Plugin, Ordner `Plugin_SN_Basis` – 32 Testdateien mit 364 Testfällen (364 grün, 0 rot, 0 übersprungen).
### `Plugin_SN_Basis/tests/test_base_dockwidget.py` ### `Plugin_SN_Basis/tests/test_base_dockwidget.py`
@@ -764,16 +764,17 @@ Worum es in der Datei geht: — (Docstring fehlt)
Testgruppen: Testgruppen:
- `TestVariableWrapper` (6 Testfälle): — (Docstring fehlt) - `TestVariableWrapper` (7 Testfälle): — (Docstring fehlt)
| Testfall | prüft | Status | geprüft | | Testfall | prüft | Status | geprüft |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `TestVariableWrapper.test_set_variable_project_noop_write_is_skipped` | Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht. | grün | nie geprüft | | `TestVariableWrapper.test_set_variable_project_noop_write_is_skipped` | Prüft, dass set_variable() im Projekt-Scope nicht schreibt, wenn der neue Wert dem bestehenden entspricht. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_set_variable_project_changed_value_is_written` | Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix 'sn_' geschrieben wird. | grün | nie geprüft | | `TestVariableWrapper.test_set_variable_project_changed_value_is_written` | Prüft, dass set_variable() im Projekt-Scope bei geändertem Wert mit dem Präfix 'sn_' geschrieben wird. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_set_variable_global_writes_prefixed_name` | Prüft, dass set_variable() im globalen Scope den Variablennamen mit 'sn_' vorangestellt schreibt. | grün | nie geprüft | | `TestVariableWrapper.test_set_variable_global_writes_prefixed_name` | Prüft, dass set_variable() im globalen Scope den Variablennamen mit 'sn_' vorangestellt schreibt. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_get_variable_global_returns_empty_string_fallback` | Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String liefert. | grün | nie geprüft | | `TestVariableWrapper.test_get_variable_global_returns_empty_string_fallback` | Prüft, dass get_variable() im globalen Scope für eine nicht gesetzte Variable einen leeren String statt None liefert. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_get_variable_invalid_scope_raises` | Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | nie geprüft | | `TestVariableWrapper.test_get_variable_project_liest_praefixierten_namen` | Prüft, dass get_variable() im Projekt-Scope den Namen mit 'sn_' aus dem Scope des aktuellen Projekts liest. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_set_variable_invalid_scope_raises` | Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | nie geprüft | | `TestVariableWrapper.test_get_variable_invalid_scope_raises` | Prüft, dass get_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | geprüft am 2026-10-26 |
| `TestVariableWrapper.test_set_variable_invalid_scope_raises` | Prüft, dass set_variable() bei einem unbekannten Scope-Namen einen ValueError auslöst. | grün | geprüft am 2026-10-26 |
### `Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py` ### `Plugin_SN_Basis/tests/test_verfahrensgebiet_manager.py`
@@ -1449,7 +1450,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 363 Testfällen ohne Beschreibung ### `sn_basis` – 0 von 364 Testfällen ohne Beschreibung
Keine Lücken. Keine Lücken.