test_governance_gates.py python
70 lines 2.5 KB
Raw
sha256:8461d44b77376fbf06fa7c3e085d309e3010fd8d5886d63c63e69ce118811ad4 docs: record AFF-b feature-tip SHAs after AFF-b-ISR commit. Human 4 days ago
1 """Unit tests for governance gate reminders (§KH1.9)."""
2
3 from __future__ import annotations
4
5 from pathlib import Path
6
7 import pytest
8
9 from adapters.config import ConfigError, load_config
10 from tests.support import FIXTURES
11 from tools.governance_gates import scan_governance_gates
12 from tools.governance_gates.checklist import governance_gates_checklist_lines
13
14
15 def test_config_parses_governance_gates_defaults() -> None:
16 config = load_config(FIXTURES / "config-git-only.yaml")
17 assert config.governance_gates.remind is True
18 assert config.governance_gates.freeze_review_required is True
19 assert config.governance_gates.build_verification_required is True
20
21
22 def test_config_parses_governance_gates_explicit() -> None:
23 config = load_config(FIXTURES / "config-governance-gates.yaml")
24 assert config.governance_gates.remind is True
25 assert "status" in config.governance_gates.surfaces
26 assert "handover-paste" in config.governance_gates.surfaces
27
28
29 def test_config_rejects_unknown_governance_gates_key() -> None:
30 with pytest.raises(ConfigError):
31 load_config(FIXTURES / "config-governance-gates-bad.yaml")
32
33
34 def test_scan_detects_pending_freeze_review_and_build_verification(tmp_path: Path) -> None:
35 config = load_config(FIXTURES / "config-governance-gates.yaml")
36 docs = tmp_path / "docs"
37 docs.mkdir(parents=True)
38 (docs / "ROADMAP.md").write_text(
39 (FIXTURES / "governance-gates-roadmap.md").read_text(encoding="utf-8"),
40 encoding="utf-8",
41 )
42 (docs / "OVERSEER-HANDOVER.md").write_text(
43 (FIXTURES / "governance-gates-handover.md").read_text(encoding="utf-8"),
44 encoding="utf-8",
45 )
46 archive = docs / "archive" / "phases"
47 archive.mkdir(parents=True)
48 (archive / "PHASE-DEMO-THINKING.md").write_text(
49 (FIXTURES / "governance-gates-phase-thinking.md").read_text(encoding="utf-8"),
50 encoding="utf-8",
51 )
52
53 result = scan_governance_gates(config, tmp_path)
54 gate_ids = {gate.gate_id for gate in result.pending}
55 assert "freeze_review" in gate_ids
56 assert "build_verification" in gate_ids
57
58
59 def test_scan_suppressed_when_remind_false(tmp_path: Path) -> None:
60 config = load_config(FIXTURES / "config-governance-gates-suppressed.yaml")
61 result = scan_governance_gates(config, tmp_path)
62 assert result.suppressed is True
63 assert result.pending == ()
64
65
66 def test_checklist_lines_include_invoke_commands() -> None:
67 lines = governance_gates_checklist_lines()
68 joined = "\n".join(lines)
69 assert "freeze-review-loop" in joined
70 assert "build-verification-review" in joined
File History 1 commit
sha256:8461d44b77376fbf06fa7c3e085d309e3010fd8d5886d63c63e69ce118811ad4 docs: record AFF-b feature-tip SHAs after AFF-b-ISR commit. Human 4 days ago