Initial LinuxCNC WebAssembly workspace snapshot
This commit is contained in:
65
scripts/test_test_entries.py
Normal file
65
scripts/test_test_entries.py
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/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 generate_test_entries import generate
|
||||
|
||||
|
||||
class TestEntriesTests(unittest.TestCase):
|
||||
def create_tree(self):
|
||||
directory = TemporaryDirectory()
|
||||
root = Path(directory.name)
|
||||
test_dir = root / "linuxcnc/tests/demo"
|
||||
unit_dir = root / "linuxcnc/unit_tests/tp"
|
||||
test_dir.mkdir(parents=True)
|
||||
unit_dir.mkdir(parents=True)
|
||||
(test_dir / "test.sh").write_text("#!/bin/sh\nlinuxcnc demo.ini\n", encoding="utf-8")
|
||||
(test_dir / "demo.ini").write_text("[EMC]\nMACHINE = demo\n", encoding="utf-8")
|
||||
(test_dir / "expected.txt").write_text("ok\n", encoding="utf-8")
|
||||
(test_dir / "checkresult").write_text("#!/bin/sh\nexit 0\n", encoding="utf-8")
|
||||
(unit_dir / "meson.build").write_text("test('blendmath', executable('test_blendmath', 'test_blendmath.c'))\n", encoding="utf-8")
|
||||
(unit_dir / "test_blendmath.c").write_text("int main(void) { return 0; }\n", encoding="utf-8")
|
||||
(root / "linuxcnc/meson.build").write_text("test('top', executable('test_top', 'x.c'))\n", encoding="utf-8")
|
||||
return directory, root
|
||||
|
||||
def test_entries_contain_contract_fields(self):
|
||||
directory, root = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
output = root / "coverage/test-entries.jsonl"
|
||||
count, _ = generate(root, output, root / "coverage/report.json")
|
||||
self.assertGreaterEqual(count, 4)
|
||||
rows = [json.loads(line) for line in output.read_text(encoding="utf-8").splitlines()]
|
||||
shell = next(row for row in rows if row["path"].endswith("/test.sh"))
|
||||
self.assertEqual(shell["parse_status"], "parsed")
|
||||
self.assertIn("linuxcnc/tests/demo/demo.ini", shell["inputs"])
|
||||
self.assertIn("linuxcnc/tests/demo/expected.txt", shell["expected"])
|
||||
self.assertEqual(shell["portability"], "portable_candidate")
|
||||
|
||||
def test_hardware_is_real_excluded(self):
|
||||
directory, root = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
test_path = root / "linuxcnc/tests/demo/test.sh"
|
||||
test_path.write_text("#!/bin/sh\nloadrt hostmot2\n", encoding="utf-8")
|
||||
generate(root, root / "out.jsonl", root / "report.json")
|
||||
rows = [json.loads(line) for line in (root / "out.jsonl").read_text(encoding="utf-8").splitlines()]
|
||||
shell = next(row for row in rows if row["path"].endswith("/test.sh"))
|
||||
self.assertEqual(shell["portability"], "REAL-EXCLUDED")
|
||||
|
||||
def test_generation_is_deterministic(self):
|
||||
directory, root = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
first, digest_one = root / "one.jsonl", None
|
||||
_, digest_one = generate(root, first, root / "report.json")
|
||||
second, digest_two = root / "two.jsonl", None
|
||||
_, digest_two = generate(root, second, root / "report.json")
|
||||
self.assertEqual(digest_one, digest_two)
|
||||
self.assertEqual(first.read_bytes(), second.read_bytes())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user