Implement AXIS parity UI and execution baseline
This commit is contained in:
24
web/worker/test_resource_resolver.mjs
Normal file
24
web/worker/test_resource_resolver.mjs
Normal file
@@ -0,0 +1,24 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { WorkspaceRuntime } from "../workspace/runtime.mjs";
|
||||
import { resolveResources } from "../workspace/resource-resolver.mjs";
|
||||
|
||||
const workspace = new WorkspaceRuntime({ files: {
|
||||
"config/main.ini": "[HAL]\nHALFILE = machine.hal\n[EMC]\nTOOL_TABLE = tools.tbl\n[RS274NGC]\nPARAMETER_FILE = vars.var\nPROGRAM = main.ngc\n[PYTHON]\nPYTHONFILE = hooks.py\n[DISPLAY]\nVCP = panel.xml\n[CLASSICLADDER]\nCLPFILE = plc.clp\n",
|
||||
"config/machine.hal": "loadrt sim\n", "config/tools.tbl": "T1 P1\n", "config/vars.var": "#1 = 2\n", "config/main.ngc": "G21\n", "config/hooks.py": "print('ok')\n", "config/panel.xml": "<vcp/>\n", "config/plc.clp": "classicladder\n",
|
||||
} });
|
||||
const graph = resolveResources({ workspace, entrypoint: "config/main.ini" });
|
||||
assert.equal(graph.status, "ready");
|
||||
assert.equal(graph.resolved_count, 7);
|
||||
assert.equal(graph.blocked_count, 0);
|
||||
assert.equal(new Set(graph.resources.map((row) => row.type)).size, 7);
|
||||
assert.match(graph.state_hash, /^fnv1a64:/);
|
||||
const missing = resolveResources({ workspace: new WorkspaceRuntime({ files: { "config/main.ini": "[HAL]\nHALFILE = missing.hal\n" } }), entrypoint: "config/main.ini" });
|
||||
assert.equal(missing.status, "blocked");
|
||||
assert.equal(missing.resources[0].code, "resource_missing");
|
||||
const host = resolveResources({ workspace: new WorkspaceRuntime({ files: { "config/main.ini": "[PYTHON]\nPYTHONFILE = /tmp/x.py\n" } }), entrypoint: "config/main.ini" });
|
||||
assert.equal(host.resources[0].code, "resource_host_path");
|
||||
const duplicate = resolveResources({ workspace, entrypoint: "config/main.ini", explicit: [{ type: "hal", path: "machine.hal" }] });
|
||||
assert.equal(duplicate.resources.some((row) => row.code === "resource_duplicate"), true);
|
||||
const second = resolveResources({ workspace, entrypoint: "config/main.ini" });
|
||||
assert.equal(second.state_hash, graph.state_hash);
|
||||
console.log(`resource_resolver=passed resolved=${graph.resolved_count} blocked=${graph.blocked_count} state_hash=${graph.state_hash}`);
|
||||
Reference in New Issue
Block a user