Initial LinuxCNC WebAssembly workspace snapshot
This commit is contained in:
65
scripts/test_config_resources.py
Normal file
65
scripts/test_config_resources.py
Normal file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
from generate_config_resources import generate, scan_entrypoint
|
||||
|
||||
|
||||
class ConfigResourcesTests(unittest.TestCase):
|
||||
def create_tree(self):
|
||||
directory = TemporaryDirectory()
|
||||
root = Path(directory.name)
|
||||
config = root / "linuxcnc/configs/sim/demo"
|
||||
config.mkdir(parents=True)
|
||||
(config / "main.ini").write_text(
|
||||
"[HAL]\nHALFILE = core.hal\nPOSTGUI_HALFILE = post.hal\n"
|
||||
"[RS274NGC]\nPARAMETER_FILE = vars.var\nSUBROUTINE_PATH = macros\n"
|
||||
"[EMCIO]\nTOOL_TABLE = tools.tbl\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
(config / "core.hal").write_text("source extra.hal\nloadusr helper.py\n", encoding="utf-8")
|
||||
(config / "post.hal").write_text("loadrt demo\n", encoding="utf-8")
|
||||
(config / "extra.hal").write_text("setp demo.value 1\n", encoding="utf-8")
|
||||
(config / "helper.py").write_text("print('ok')\n", encoding="utf-8")
|
||||
(config / "tools.tbl").write_text("T1 P1\n", encoding="utf-8")
|
||||
(config / "vars.var").write_text("#1 = 2\n", encoding="utf-8")
|
||||
(config / "macros").mkdir()
|
||||
return directory, root, config / "main.ini"
|
||||
|
||||
def test_resolves_ini_and_hal_edges(self):
|
||||
directory, root, entrypoint = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
rows = scan_entrypoint(root, root / "linuxcnc/configs/sim", entrypoint)
|
||||
paths = {row["path"] for row in rows}
|
||||
self.assertIn("linuxcnc/configs/sim/demo/core.hal", paths)
|
||||
self.assertIn("linuxcnc/configs/sim/demo/extra.hal", paths)
|
||||
self.assertIn("linuxcnc/configs/sim/demo/helper.py", paths)
|
||||
self.assertIn("linuxcnc/configs/sim/demo/tools.tbl", paths)
|
||||
|
||||
def test_missing_resource_is_retained(self):
|
||||
directory, root, entrypoint = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
entrypoint.write_text("[HAL]\nHALFILE = missing.hal\n", encoding="utf-8")
|
||||
rows = scan_entrypoint(root, root / "linuxcnc/configs/sim", entrypoint)
|
||||
missing = [row for row in rows if row["path"].endswith("missing.hal")]
|
||||
self.assertEqual(len(missing), 1)
|
||||
self.assertEqual(missing[0]["parse_status"], "missing")
|
||||
|
||||
def test_generation_is_deterministic(self):
|
||||
directory, root, _ = self.create_tree()
|
||||
self.addCleanup(directory.cleanup)
|
||||
first = root / "one.jsonl"
|
||||
second = root / "two.jsonl"
|
||||
report = root / "report.json"
|
||||
_, digest_one = generate(root, first, report)
|
||||
_, digest_two = generate(root, second, report)
|
||||
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