Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 0 additions & 64 deletions .claude/settings.local.json

This file was deleted.

32 changes: 32 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Zeilenenden repo-weit normalisieren: git speichert LF, die Arbeitskopie darf
# plattformueblich sein. Ohne diese Datei meldete git unter Windows den halben
# Baum als geaendert - ein reiner CRLF/LF-Unterschied ohne Inhaltsaenderung.
* text=auto

# Dateien, die im Linux-Container ausgefuehrt werden, brauchen LF auch in der
# Arbeitskopie: CRLF laesst bash mit "\r: command not found" scheitern.
Dockerfile text eol=lf
*.sh text eol=lf
*.yml text eol=lf
*.yaml text eol=lf

# Windows-Skripte umgekehrt.
*.bat text eol=crlf
*.ps1 text eol=crlf

# Binaerdateien nie konvertieren. `text=auto` erkennt die meisten davon
# ohnehin, die Liste macht es fuer die Geodatenformate explizit.
*.png binary
*.jpg binary
*.ico binary
*.qm binary
*.zip binary
*.gpkg binary
*.shp binary
*.shx binary
*.dbf binary
*.qix binary
*.tif binary

# Nicht als binaer markieren: *.asc (ESRI-ASCII-Grid), *.prj, *.cpg und *.qml
# sind Textformate und werden von `text=auto` korrekt behandelt.
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/ibtoolpartion.iml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/inspectionProfiles/profiles_settings.xml

This file was deleted.

7 changes: 0 additions & 7 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ and
[`docs/quickstart.md`](https://github.com/IB-Tool/IB-Tool-3/blob/master/docs/quickstart.md)
for how it fits into IB-Tool 3's own workflow.

IBTool needs four more input layers. Its sibling plugin
IB-Tool 3 needs four more input layers. Its sibling plugin
**[Data Wizard](https://github.com/IB-Tool/data_wizard)** produces the
`HU` / `RN` / `Aux` layers from raw ATKIS Basis-DLM data — the building
footprints it outputs can be fed straight into this plugin as input.
Expand Down
5 changes: 3 additions & 2 deletions docs/test-strategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This document is the single authoritative reference for **why** the test suite i
- A tutorial on pytest syntax — see the pytest documentation.
- A list of tactical rules for geometry checks or test structure — see [`ai/core/testing-rules.md`](../ai/core/testing-rules.md).

This plugin is a companion to **[IBTool](https://github.com/IB-Tool/IB-Tool-3)** and mirrors its testing conventions at a scale appropriate for a single-module plugin. See [IBTool's own `docs/test-strategy.md`](https://github.com/IB-Tool/IB-Tool-3/blob/master/docs/test-strategy.md) for the full-size version of this document.
This plugin is a companion to **[IB-Tool 3](https://github.com/IB-Tool/IB-Tool-3)** and mirrors its testing conventions at a scale appropriate for a single-module plugin. See [IB-Tool 3's own `docs/test-strategy.md`](https://github.com/IB-Tool/IB-Tool-3/blob/master/docs/test-strategy.md) for the full-size version of this document.

---

Expand Down Expand Up @@ -209,6 +209,8 @@ def test_single_building(self, plugin, tmp_path):
|---|---|
| Full `run()` success path untested | Add a unit test that configures the mock dialog with valid paths/`cell_size`, stubs `siedgr()`, and asserts the success `pushMessage` call |
| No `@pytest.mark.performance` test for `siedgr()` at scale | Add a `performance` + `slow` test with 50+ buildings, asserting it completes within a stated time budget |
| A missing `qgis:heatmapkerneldensityestimation` skips every `siedgr()` integration test without failing | The collection-time `skipif` in `test_siedgr_integration.py` keeps the suite green even when the algorithm is absent from the Processing build — CI then reports success while `siedgr()` has zero real coverage. In the Docker image the algorithm *must* be present: make its absence a hard error there (assert it is registered when `QGIS_PREFIX_PATH=/usr`) and keep the skip for local runs only |
| `siedgr()` is a single ~120-line method with 12 `processing.run()` calls | Its steps cannot be tested individually — any failing step surfaces as "the whole pipeline is wrong". Splitting it into named steps (centroids → heatmap → voronoi → cleanup → polygonize) would let the integration tests pinpoint failures. It also still writes to stdout via `print()` instead of the QGIS logger (`IbToolPartion.py`, `run()`) |

### Priority 2 — Larger effort, lower urgency

Expand Down Expand Up @@ -262,4 +264,3 @@ pytest test/test_siedgr_integration.py -v
|------|---------|
| [`docs/contributing.md`](contributing.md) | CI/CD pipeline, Docker environment, code linting |
| [`ai/core/testing-rules.md`](../ai/core/testing-rules.md) | Tactical rules: geometry checks, test structure, framework conventions |
| [`docs/Testplan-data_wizard-ibtoolpartion.md`](Testplan-data_wizard-ibtoolpartion.md) | Implementation plan this document and the current test suite were built from |
Binary file removed i18n/IbToolPartition_de.qm
Binary file not shown.
9 changes: 4 additions & 5 deletions test/test_plugin_structure.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# -*- coding: utf-8 -*-
"""Structural tests that don't require QGIS to be available.

Taken over from the former test/test_test.py (dissolved — see
docs/Testplan-data_wizard-ibtoolpartion.md Phase 3.3). The other tests that
used to live there duplicated coverage found elsewhere or tested the Python
standard library / MagicMock itself and carried no assertion value, so they
were dropped rather than moved.
Taken over from the former test/test_test.py, which was dissolved. The other
tests that used to live there duplicated coverage found elsewhere or tested
the Python standard library / MagicMock itself and carried no assertion
value, so they were dropped rather than moved.
"""
import sys
from pathlib import Path
Expand Down
11 changes: 5 additions & 6 deletions test/test_siedgr_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
test/layer_factories.py and written to tmp_path — no test data checked into
the repository is needed.

Requires a full QGIS Processing environment (Docker, see
docs/Testplan-data_wizard-ibtoolpartion.md Phase 3.2). All tests are skipped
Requires a full QGIS Processing environment (Docker). All tests are skipped
automatically when QGIS is unavailable, and again when the
qgis:heatmapkerneldensityestimation algorithm siedgr() depends on is not
registered in the running QGIS/Processing build (this is checked at
collection time instead of via the one-off Docker experiment described in
the plan, so the gap is self-documenting no matter which QGIS image runs
these tests).
registered in the running QGIS/Processing build (checked at collection time,
so the gap is self-documenting no matter which QGIS image runs these tests -
see docs/test-strategy.md, Gap Analysis, on why a silent skip is not enough
in CI).
"""
# pylint: disable=possibly-used-before-assignment
# QgsWkbTypes/QgsVectorLayer/IbToolPartition/the layer_factories imports are
Expand Down
Loading