Initial LinuxCNC WebAssembly workspace snapshot
This commit is contained in:
54
scripts/test_native_runner.py
Normal file
54
scripts/test_native_runner.py
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
from native_runner import compare_golden, run_entry
|
||||
|
||||
|
||||
class NativeRunnerTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.directory = TemporaryDirectory()
|
||||
self.root = Path(self.directory.name)
|
||||
(self.root / "linuxcnc/tests/demo").mkdir(parents=True)
|
||||
(self.root / "linuxcnc/tests/demo/test.sh").write_text("#!/bin/sh\nprintf 'ok\\n'\n", encoding="utf-8")
|
||||
(self.root / "artifacts").mkdir()
|
||||
|
||||
def tearDown(self):
|
||||
self.directory.cleanup()
|
||||
|
||||
def entry(self, portability="portable_candidate"):
|
||||
return {
|
||||
"test_source_id": "test:linuxcnc/tests/demo/test.sh",
|
||||
"path": "linuxcnc/tests/demo/test.sh",
|
||||
"command": "bash linuxcnc/tests/demo/test.sh",
|
||||
"portability": portability,
|
||||
"parse_status": "parsed",
|
||||
"source_sha": "source",
|
||||
}
|
||||
|
||||
def test_fixed_runner_emits_stable_content_hashes(self):
|
||||
result = run_entry(self.root, self.entry(), self.root / "artifacts", 5)
|
||||
self.assertEqual(result["status"], "passed")
|
||||
self.assertEqual(result["stdout"], "ok\n")
|
||||
self.assertEqual(result["cwd"], "linuxcnc/tests/demo")
|
||||
self.assertRegex(result["result_sha256"], r"^[0-9a-f]{64}$")
|
||||
|
||||
def test_real_excluded_is_not_executed_without_override(self):
|
||||
result = run_entry(self.root, self.entry("REAL-EXCLUDED"), self.root / "artifacts", 5)
|
||||
self.assertEqual(result["status"], "REAL-EXCLUDED")
|
||||
self.assertNotIn("exit_code", result)
|
||||
|
||||
def test_golden_comparison_is_explicit(self):
|
||||
actual = {"status": "passed", "exit_code": 0}
|
||||
self.assertEqual(compare_golden(actual, {"schema": "native-golden.v1", "expected": actual})["status"], "passed")
|
||||
self.assertEqual(compare_golden(actual, {"schema": "native-golden.v1", "expected": {"exit_code": 1}})["status"], "different")
|
||||
self.assertEqual(compare_golden(actual, {"schema": "unknown", "expected": actual})["status"], "blocked")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user