CIE-Unified

git clone 

CIE-Unified / tests
codex@macbookpro  ·  2026-03-31

test_validation.py

 1from __future__ import annotations
 2
 3import json
 4import subprocess
 5import sys
 6import tempfile
 7import unittest
 8from pathlib import Path
 9
10from cie.validation import (
11    DEFAULT_JSON_REPORT_PATH,
12    DEFAULT_MARKDOWN_REPORT_PATH,
13    REPORT_TOP_LEVEL_KEYS,
14    generate_validation_report,
15)
16
17
18REPO_ROOT = Path(__file__).resolve().parent.parent
19
20
21class ValidationReportTests(unittest.TestCase):
22    def test_validation_entrypoint_runs_with_default_paths(self) -> None:
23        completed = subprocess.run(
24            [sys.executable, "-m", "cie.validation"],
25            cwd=REPO_ROOT,
26            capture_output=True,
27            text=True,
28        )
29        self.assertEqual(completed.returncode, 0, msg=completed.stderr)
30        self.assertTrue(DEFAULT_JSON_REPORT_PATH.exists())
31        self.assertTrue(DEFAULT_MARKDOWN_REPORT_PATH.exists())
32
33    def test_json_report_has_stable_top_level_keys(self) -> None:
34        with tempfile.TemporaryDirectory() as temp_dir:
35            json_path = Path(temp_dir) / "validation.json"
36            markdown_path = Path(temp_dir) / "validation.md"
37            report = generate_validation_report(json_path, markdown_path)
38            self.assertEqual(tuple(report), REPORT_TOP_LEVEL_KEYS)
39            payload = json.loads(json_path.read_text(encoding="utf-8"))
40            self.assertEqual(tuple(payload), REPORT_TOP_LEVEL_KEYS)
41            self.assertEqual(payload["overall_status"]["status"], "pass")
42            self.assertTrue(payload["overall_status"]["ready_for_review"])
43
44    def test_markdown_report_contains_pass_fail_style_checks(self) -> None:
45        with tempfile.TemporaryDirectory() as temp_dir:
46            json_path = Path(temp_dir) / "validation.json"
47            markdown_path = Path(temp_dir) / "validation.md"
48            generate_validation_report(json_path, markdown_path)
49            markdown = markdown_path.read_text(encoding="utf-8")
50            self.assertIn("# Branch A Validation Report", markdown)
51            self.assertIn("## Smoke Checks", markdown)
52            self.assertIn("`PASS`", markdown)
53            self.assertIn("ready for review/comparison", markdown.lower())
54
55    def test_report_sections_expose_expected_schema(self) -> None:
56        with tempfile.TemporaryDirectory() as temp_dir:
57            json_path = Path(temp_dir) / "validation.json"
58            markdown_path = Path(temp_dir) / "validation.md"
59            report = generate_validation_report(json_path, markdown_path)
60            for key in (
61                "interface_checks",
62                "smoke_checks",
63                "dynamics_checks",
64                "sedimentation_checks",
65                "snapshot_checks",
66            ):
67                section = report[key]
68                self.assertEqual(section["status"], "pass")
69                self.assertIn("checks", section)
70                self.assertGreater(len(section["checks"]), 0)
71
72
73if __name__ == "__main__":
74    unittest.main()