[tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = "-ra --tb=short" markers = [ "unit: pure unit test — no external services, no cluster, runs anywhere", "integration: requires a running service, cluster, or network dependency", "min: tests the min (containerd) deployment path", "k3d: tests the k3d (local Docker cluster) deployment path", "k3s: tests the k3s (homelab) deployment path", "gke: tests the GKE (production) deployment path", ] [tool.coverage.run] source = ["knoe"] branch = true omit = [ "tests/*", "*/__init__.py", "knoe/ui/*", # UI layer tested via integration only ] [tool.coverage.report] show_missing = true skip_covered = false # Raised incrementally as each pipeline phase lands — see docs/pipeline-phases.md Appendix C fail_under = 0 [tool.coverage.xml] output = "coverage.xml" [tool.coverage.html] directory = "htmlcov"