"""guards_report: job attribution and the Grant-owned split.""" from __future__ import annotations import importlib.util import sys from pathlib import Path import yaml ROOT = Path(__file__).resolve().parents[2] sys.path.insert(0, str(ROOT / "scripts")) _spec = importlib.util.spec_from_file_location("guards_report", ROOT / "scripts" / "guards_report.py") gr = importlib.util.module_from_spec(_spec) sys.modules["guards_report"] = gr _spec.loader.exec_module(gr) OWNED = yaml.safe_load((ROOT / "ci" / "grant-owned.yml").read_text())["grant_owned"] WF = """name: CI on: push: jobs: reality-check: runs-on: x steps: - run: npm install jsdom test-backend: runs-on: x steps: - run: pip install pytest """ def test_job_of_attributes_lines_to_their_job(): assert gr.job_of(WF, 3) is None # `on:` block, not a job assert gr.job_of(WF, 8) == "reality-check" assert gr.job_of(WF, 12) == "test-backend" def test_windy_pro_desktop_jobs_and_paths_are_grant_owned(): ci = ".github/workflows/ci.yml" assert gr.grant_owned("windy-pro", ci, "reality-check", OWNED) assert gr.grant_owned("windy-pro", ci, "build-electron", OWNED) assert not gr.grant_owned("windy-pro", ci, "test-backend", OWNED) # server side: 8c assert gr.grant_owned("windy-pro", ".github/workflows/release-mac.yml", None, OWNED) assert gr.grant_owned("windy-pro", "src/client/desktop/main.js", None, OWNED) assert not gr.grant_owned("windy-pro", "services/account-server/Dockerfile", None, OWNED) assert not gr.grant_owned("windy-chat", "src/client/desktop/main.js", None, OWNED) def test_render_splits_lane_and_grant_counts(): F = gr.cg.Finding res = {"windy-pro": {"sha": "a" * 40, "compute": [], "hygiene": [(F("ci.yml", 8, "floating install", "npm install"), "reality-check", True), (F("ci.yml", 12, "floating install", "pip x"), "test-backend", False)]}, "windy-git": {"sha": "b" * 40, "compute": [], "hygiene": []}} md = gr.render(res) assert "| ci-hygiene (house rule 6) | 1 | 1 | ❌ not yet |" in md assert "| compute-guard (Mind is the only door) | 0 | 0 | ✅ YES |" in md assert "| windy-git | bbbbbbb | 0 | 0 | clean ✅ |" in md assert "(job reality-check)" in md