53 lines
2.4 KiB
Python
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()
|