25 lines
2.0 KiB
JavaScript
25 lines
2.0 KiB
JavaScript
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}`);
|