Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/coverage-refresh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ jobs:
git config user.name "mfc-bot"
git config user.email "mfc-bot@users.noreply.github.com"
git add tests/coverage_map.json.gz
git commit -m "test: refresh coverage map [skip ci]"
# --no-verify: this bot commit stages only the binary coverage map; it
# must not run the repo pre-commit hook (./mfc.sh precheck/spelling),
# which is for source changes and aborts the commit on the runner.
git commit --no-verify -m "test: refresh coverage map [skip ci]"
# Push to protected master via CACHE_PUSH_TOKEN (a PAT/App token with
# contents:write + branch-protection bypass), mirroring deploy-tap.yml's
# x-access-token push. The default GITHUB_TOKEN is rejected by protection.
Expand Down
13 changes: 12 additions & 1 deletion toolchain/mfc/test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,18 @@ def test():
if ARG("build_coverage_map"):
from .coverage_build import build_coverage_map

all_cases = [b.to_case() for b in cases]
# Convergence tests are order-of-accuracy checks driven by convergence.py,
# which fills in grid resolution and patch geometry per refinement level at
# runtime. Their base params are skeletons (m=n=p=0, no geometry) that cannot
# run standalone, so the direct-invocation collector cannot map them. Exclude
# them: absent from the map, select_tests conservatively always-runs them
# (rung 5), which is the desired behavior for convergence checks anyway.
convergence = [b for b in cases if getattr(b, "kind", "golden") == "convergence"]
coverage_cases = [b for b in cases if getattr(b, "kind", "golden") != "convergence"]
if convergence:
cons.print(f"[yellow]Excluding {len(convergence)} convergence tests from the coverage map (always-run by design).[/yellow]")

all_cases = [b.to_case() for b in coverage_cases]
unique = set()
for case, code in itertools.product(all_cases, [PRE_PROCESS, SIMULATION, POST_PROCESS]):
slug = code.get_slug(case.to_input_file())
Expand Down
Loading