diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 8fb222d..f7c2b51 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -21,13 +21,18 @@ jobs: run: nix develop --command uv sync --frozen # coverage.py branch measurement: https://coverage.readthedocs.io/en/7.10.7/branch.html + # Importable source identity: https://coverage.readthedocs.io/en/7.10.7/source.html + # Empty-data gate: https://coverage.readthedocs.io/en/7.10.7/commands/cmd_report.html # uv --with contract: https://docs.astral.sh/uv/reference/cli/#uv-run--with + # LLM contract: DISCOVERED -> ENCODED -> ROUNDTRIP_VERIFIED -> BENCHMARKED -> REPORTED. + # Coverage is descriptive code-quality evidence; it never advances benchmark + # lifecycle state or changes ranking eligibility. - name: Run branch coverage - run: nix develop --command uv run --frozen --with coverage==7.10.7 coverage run --branch --source=src -m pytest + run: nix develop --command uv run --frozen --with coverage==7.10.7 coverage run --branch --source=format_bench -m pytest - name: Write coverage reports run: | - nix develop --command uv run --frozen --with coverage==7.10.7 coverage report + nix develop --command uv run --frozen --with coverage==7.10.7 coverage report --fail-under=1 nix develop --command uv run --frozen --with coverage==7.10.7 coverage xml -o coverage.xml nix develop --command uv run --frozen --with coverage==7.10.7 coverage html diff --git a/tests/test_coverage_workflow.py b/tests/test_coverage_workflow.py new file mode 100644 index 0000000..310a8ce --- /dev/null +++ b/tests/test_coverage_workflow.py @@ -0,0 +1,15 @@ +from pathlib import Path + + +WORKFLOW = Path(__file__).parents[1] / ".github/workflows/coverage.yml" + + +def test_coverage_workflow_targets_imported_package_and_rejects_empty_data() -> None: + workflow = WORKFLOW.read_text(encoding="utf-8") + + assert "--source=format_bench -m pytest" in workflow + assert "--source=src" not in workflow + assert "coverage report --fail-under=1" in workflow + assert workflow.index("coverage report --fail-under=1") < workflow.index( + "coverage xml" + )