From f946e0e318451093a1a0d7c3e00e0427c72c3ce7 Mon Sep 17 00:00:00 2001 From: Anionix Date: Fri, 24 Jul 2026 17:46:45 +0900 Subject: [PATCH] fix: reject empty coverage evidence --- .github/workflows/coverage.yml | 9 +++++++-- tests/test_coverage_workflow.py | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/test_coverage_workflow.py 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" + )