推进 OPFS 会话快照清单能力

This commit is contained in:
2026-06-14 14:50:23 +08:00
parent d5c11a852a
commit 2bff22e0d9
4 changed files with 165 additions and 4 deletions

View File

@@ -15,6 +15,7 @@
sessionSnapshotPath,
} from "../../runtime/opfs/path-model.js";
import {
createMachineSessionSnapshotPayload,
loadSessionSnapshot,
saveSessionSnapshot,
} from "../../runtime/opfs/snapshot-store.js";
@@ -124,7 +125,26 @@ TOOL_TABLE = browser-tool.tbl
await saveTextFile(opfsPath, iniText);
assertEqual(await loadTextFile(opfsPath), iniText, "opfs roundtrip");
const snapshotPayload = { files: { ini: opfsPath } };
const snapshotPayload = createMachineSessionSnapshotPayload("browser-smoke", {
gcodeFilename: "browser-smoke.ngc",
});
assertEqual(snapshotPayload.machineId, "browser-smoke", "snapshot machine");
assertEqual(snapshotPayload.files.ini, opfsPath, "snapshot payload INI");
assertEqual(
snapshotPayload.files.parameters,
"linuxcnc/machines/browser-smoke/linuxcnc.var",
"snapshot payload parameter file",
);
assertEqual(
snapshotPayload.files.toolTable,
"linuxcnc/machines/browser-smoke/tool.tbl",
"snapshot payload tool table",
);
assertEqual(
snapshotPayload.files.gcode,
"linuxcnc/gcode/browser-smoke.ngc",
"snapshot payload G-code",
);
const savedSnapshot = await saveSessionSnapshot(
"browser-session",
snapshotPayload,
@@ -139,7 +159,28 @@ TOOL_TABLE = browser-tool.tbl
assertEqual(loadedSnapshot.sessionId, "browser-session", "snapshot session");
assertEqual(loadedSnapshot.createdAt, savedSnapshot.createdAt, "snapshot timestamp");
assertEqual(loadedSnapshot.payload.files.ini, opfsPath, "snapshot payload");
assertEqual(loadedSnapshot.payload.files.gcode, snapshotPayload.files.gcode, "snapshot G-code payload");
assertEqual(loadedSnapshot.metadata.source, "browser-smoke", "snapshot metadata");
const customMachineSnapshotPayload = createMachineSessionSnapshotPayload("browser-smoke", {
parameterFilename: "browser-linuxcnc.var",
toolTableFilename: "browser-tool.tbl",
gcodeOpfsPath: "linuxcnc/gcode/browser-custom.ngc",
});
assertEqual(
customMachineSnapshotPayload.files.parameters,
"linuxcnc/machines/browser-smoke/browser-linuxcnc.var",
"custom snapshot parameter file",
);
assertEqual(
customMachineSnapshotPayload.files.toolTable,
"linuxcnc/machines/browser-smoke/browser-tool.tbl",
"custom snapshot tool table",
);
assertEqual(
customMachineSnapshotPayload.files.gcode,
"linuxcnc/gcode/browser-custom.ngc",
"custom snapshot G-code",
);
assertEqual(
sessionSnapshotPath("browser-session", "browser-custom-snapshot.json"),
"linuxcnc/sessions/browser-session/browser-custom-snapshot.json",