Files
linuxcncWebWASM/scripts/test_configuration_regression.py

53 lines
2.4 KiB
Python

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_configuration_regression import generate
ROOT = Path(__file__).resolve().parents[1]
REPORT = ROOT / "coverage/configuration-regression.report.json"
class ConfigurationRegressionTests(unittest.TestCase):
def test_report_contract(self):
report = json.loads(REPORT.read_text(encoding="utf-8"))
self.assertEqual(report["schema"], "configuration-regression-report.v1")
self.assertEqual(report["implementation_status"], "verified")
self.assertEqual(report["counts"]["registered_configuration_entries"], 264)
self.assertEqual(len(report["configuration_entries"]), 264)
self.assertEqual(report["closure"]["graph_orphan_entry_ids"], [])
self.assertEqual(report["closure"]["unowned_template_ids"], [])
self.assertEqual(report["closure"]["resource_orphan_entrypoints"], [])
self.assertEqual(report["runtime"]["native_wasm"]["status"], "passed")
self.assertEqual(report["runtime"]["worker"]["status"], "passed")
self.assertEqual(report["recovery_summary"]["endpoints_equal"], True)
self.assertEqual(report["oracle"]["status"], "blocked")
self.assertTrue(report["oracle"]["derived_configuration_results_are_not_official"])
def test_all_entry_ids_are_unique_and_repeat_stable(self):
report = json.loads(REPORT.read_text(encoding="utf-8"))
ids = [row["config_id"] for row in report["configuration_entries"]]
self.assertEqual(len(ids), len(set(ids)))
for group in (report["runtime"]["native"], report["runtime"]["wasm"]):
self.assertEqual(group["status"], "passed")
self.assertTrue(all(row["repeat_stable"] for row in group["records"].values()))
self.assertTrue(all(row["repeat_stable"] for row in report["runtime"]["worker"]["records"].values()))
def test_generation_is_deterministic(self):
with TemporaryDirectory() as directory:
first_path = Path(directory) / "first.json"
second_path = Path(directory) / "second.json"
first = generate(ROOT, first_path)
second = generate(ROOT, second_path)
self.assertEqual(first, second)
self.assertEqual(first_path.read_bytes(), second_path.read_bytes())
if __name__ == "__main__":
unittest.main()