animetix-web / tests /deploy /test_coverage_gate.py
MissawB's picture
Upload folder using huggingface_hub (part 6)
3a1f489 verified
Raw History Blame Contribute Delete
1.33 kB
"""Lockstep guard for the backend coverage gate.
Audit dette 2026-07-19: the pre-push hook said `--cov-fail-under=75` while
ci.yml and pyproject.toml said 76 — a push could pass locally at 75.x% and
then fail the CI gate. The three declarations must carry the same number
(pyproject's comment already promises they are "kept in lockstep").
"""
import re
from pathlib import Path
REPO = Path(__file__).resolve().parents[2]
def _gates():
gates = {}
for rel in (".pre-commit-config.yaml", ".github/workflows/ci.yml"):
text = (REPO / rel).read_text(encoding="utf-8")
for value in re.findall(r"--cov-fail-under=(\d+)", text):
gates.setdefault(rel, set()).add(int(value))
toml = (REPO / "pyproject.toml").read_text(encoding="utf-8")
m = re.search(r"^fail_under\s*=\s*(\d+)", toml, re.M)
assert m, "pyproject.toml no longer declares fail_under — update this guard"
gates["pyproject.toml"] = {int(m.group(1))}
return gates
def test_backend_coverage_gate_is_in_lockstep_everywhere():
gates = _gates()
assert ".pre-commit-config.yaml" in gates, "pre-push pytest hook lost its gate"
assert ".github/workflows/ci.yml" in gates, "CI test job lost its gate"
distinct = set().union(*gates.values())
assert len(distinct) == 1, f"coverage gates diverge: {gates}"