import json import sys import unittest from pathlib import Path from tempfile import TemporaryDirectory sys.path.insert(0, str(Path(__file__).resolve().parent)) from generate_kinematics_oracle_report import generate class KinematicsOracleReportTests(unittest.TestCase): def make_tree(self): directory = TemporaryDirectory() root = Path(directory.name) coverage = root / "coverage" coverage.mkdir() closure = { "context_id": "test-context", "missing_required_test_roots": ["linuxcnc/unit_tests/kinematics"], } (coverage / "kinematics-source-closure.report.json").write_text(json.dumps(closure), encoding="utf-8") sample = { "sample_id": "kinematics-sample:cartesian:nominal-roundtrip", "family": "cartesian", "configuration_id": "config:demo", "operation": "fk_ik_fk_roundtrip", "input": {"joint": [1.0]}, "expected": {"invariant": "pose_roundtrip", "absolute_tolerance": 1e-9}, "execution": {"status": "blocked", "reason": "missing official oracle"}, } (coverage / "kinematics-oracle-samples.jsonl").write_text(json.dumps(sample) + "\n", encoding="utf-8") return directory, root def test_missing_official_root_blocks_without_fake_golden(self): directory, root = self.make_tree() self.addCleanup(directory.cleanup) report = generate(root, root / "report.json", root / "schema.json") self.assertEqual(report["status"], "blocked") self.assertEqual(report["sample_count"], 1) self.assertEqual(report["ready_count"], 0) self.assertEqual(report["records"][0]["result"]["error_code"], "MISSING_OFFICIAL_ORACLE") self.assertEqual(report["records"][0]["execution"]["status"], "blocked") self.assertEqual(json.loads((root / "schema.json").read_text(encoding="utf-8"))["$id"], "linuxcnc-web-wasm/kinematics-golden.v1") if __name__ == "__main__": unittest.main()