Guard OPFS gcode program staging

This commit is contained in:
2026-06-13 17:43:45 +08:00
parent 41a9cd65c1
commit 4cb52ef2e7
2 changed files with 82 additions and 6 deletions

View File

@@ -95,14 +95,25 @@ const storage = {
getDirectory: async () => root,
};
function assertGcodeProgramStoragePath(filename, path) {
assert.equal(
path,
`linuxcnc/gcode/${filename}`,
`${filename} G-code OPFS path drift`,
);
}
assert.equal(await getOpfsRoot(storage), root);
assert.equal(normalizeOpfsPath("linuxcnc/machines/xyzab.ini"), "linuxcnc/machines/xyzab.ini");
assert.equal(machineIniPath("xyzab-tdr"), "linuxcnc/machines/xyzab-tdr/machine.ini");
assert.equal(toolTablePath("xyzab-tdr"), "linuxcnc/machines/xyzab-tdr/tool.tbl");
assert.equal(parameterFilePath("xyzab-tdr"), "linuxcnc/machines/xyzab-tdr/linuxcnc.var");
assert.equal(gcodeProgramPath("fixture.ngc"), "linuxcnc/gcode/fixture.ngc");
assert.equal(gcodeProgramPath("custom-fixture.ngc"), "linuxcnc/gcode/custom-fixture.ngc");
assertGcodeProgramStoragePath("fixture.ngc", gcodeProgramPath("fixture.ngc"));
assertGcodeProgramStoragePath(
"custom-fixture.ngc",
gcodeProgramPath("custom-fixture.ngc"),
);
assert.equal(previewCachePath("fixture"), "linuxcnc/preview-cache/fixture/preview.json");
assert.equal(sessionSnapshotPath("session-1"), "linuxcnc/sessions/session-1/snapshot.json");
assert.equal(
@@ -200,14 +211,14 @@ assert.deepEqual(await loadMachineTextFiles("xyzab-tdr", { storage }), {
toolTable: "T0 P0 ; no tool\nT2 P2 Z1.25 D0.25\n",
parameters: "5161 0.0\n5162 0.0\n",
});
assert.equal(
assertGcodeProgramStoragePath(
"fixture.ngc",
await saveGcodeProgram("fixture.ngc", "G0 X0 Y0\nM2\n", { storage }),
"linuxcnc/gcode/fixture.ngc",
);
assert.equal(await loadGcodeProgram("fixture.ngc", { storage }), "G0 X0 Y0\nM2\n");
assert.equal(
assertGcodeProgramStoragePath(
"custom-fixture.ngc",
await saveGcodeProgram("custom-fixture.ngc", "G1 X1 F10\nM2\n", { storage }),
"linuxcnc/gcode/custom-fixture.ngc",
);
assert.equal(await loadGcodeProgram("custom-fixture.ngc", { storage }), "G1 X1 F10\nM2\n");