build(#134): Coverage-Baseline (.coveragerc) + pytest-cov in dev-deps

Phase 3 von #134 / ADR 0007: 60%-Mindestschwelle pro Default-Lauf, mit
show_missing fuer schnelle Lueckenanalyse.

Konfiguration:
- source = app, omits Hilfs-Skripte (reindex_embeddings, sync_abgeordnetenwatch)
- exclude_lines: __repr__, NotImplementedError, __main__-Block,
  TYPE_CHECKING, Ellipsis-Stubs
- htmlcov-Ordner via .gitignore ausgeschlossen

Aufruf:
  pytest --cov=app --cov-report=term-missing
  pytest --cov=app --cov-report=html  # detaillierte HTML-Ansicht in htmlcov/

ADR 0007 (Test-Taxonomie) erklaert das Gesamtschema.
This commit is contained in:
Dotty Dotter 2026-04-28 02:05:39 +02:00
parent 7e20f910fe
commit 3262f17458
3 changed files with 35 additions and 0 deletions

30
.coveragerc Normal file
View File

@ -0,0 +1,30 @@
[run]
source = app
omit =
# Hilfs-Skripte und Migrations-Tools — nicht produktiver Code
app/reindex_embeddings.py
app/sync_abgeordnetenwatch.py
# Generated / Auto-Discovery
app/__init__.py
[report]
# Faustregel ADR 0007: keine 100%-Jagd, aber 70% pro Kern-Modul ist
# der Mindeststandard. Der show_missing-Flag macht Luecken im CI-Output
# sofort sichtbar.
show_missing = true
skip_covered = false
precision = 1
fail_under = 60
# Zeilen, die nicht gezaehlt werden sollen — typische Boilerplate ohne
# eigentliche Testbarkeit.
exclude_lines =
pragma: no cover
def __repr__
raise NotImplementedError
if __name__ == .__main__.:
if TYPE_CHECKING:
\.\.\.
[html]
directory = htmlcov

4
.gitignore vendored
View File

@ -18,4 +18,8 @@ reports/
.DS_Store
Thumbs.db
site/
# Coverage reports (Phase 3 von #134, ADR 0007)
.coverage
.coverage.*
htmlcov/

View File

@ -11,3 +11,4 @@
pytest>=8.0.0
pytest-asyncio>=0.24.0
pytest-cov>=5.0.0