import assert from "node:assert/strict"; import { preflightConfiguration, resolveReference, splitReference } from "./configuration.mjs"; assert.deepEqual(splitReference("LIB:basic_sim.tcl -no_sim_spindle"), { status: "accepted", code: null, raw: "LIB:basic_sim.tcl -no_sim_spindle", value: "LIB:basic_sim.tcl", args: ["-no_sim_spindle"], }); const available = new Set([ "linuxcnc/lib/hallib/basic_sim.tcl", "linuxcnc/configs/sim/demo/core.hal", "linuxcnc/nc_files/probe.ngc", ]); assert.equal(resolveReference({ rawValue: "LIB:basic_sim.tcl -no_sim_spindle", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/lib/hallib/basic_sim.tcl"); assert.equal(resolveReference({ rawValue: "core.hal", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/configs/sim/demo/core.hal"); assert.equal(resolveReference({ rawValue: "linuxcnc/nc_files/probe.ngc", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/nc_files/probe.ngc"); assert.equal(resolveReference({ rawValue: "~/linuxcnc/nc_files", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).code, "configuration_host_path"); assert.equal(resolveReference({ rawValue: "../../../../etc/passwd", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).code, "configuration_outside_repo"); const report = preflightConfiguration({ entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available, rows: [ { resource_source_id: "r1", entrypoint: "linuxcnc/configs/sim/demo/main.ini", path: "LIB:basic_sim.tcl -no_sim_spindle", raw_value: "LIB:basic_sim.tcl -no_sim_spindle", parse_status: "missing" }, { resource_source_id: "r2", entrypoint: "linuxcnc/configs/sim/demo/main.ini", path: "missing.hal", raw_value: "missing.hal", parse_status: "missing" }, ], }); assert.equal(report.schema, "configuration-startup-closure.v1"); assert.equal(report.status, "blocked"); assert.equal(report.resolved_count, 1); assert.equal(report.blocked_count, 1); console.log(`configuration_resolver=passed resolved=${report.resolved_count} blocked=${report.blocked_count}`);