Guard OPFS snapshot staging

This commit is contained in:
2026-06-13 17:52:12 +08:00
parent 4cb52ef2e7
commit 422d9f42c7
2 changed files with 91 additions and 3 deletions

View File

@@ -103,6 +103,14 @@ function assertGcodeProgramStoragePath(filename, path) {
);
}
function assertSessionSnapshotStoragePath(sessionId, path, filename = "snapshot.json") {
assert.equal(
path,
`linuxcnc/sessions/${sessionId}/${filename}`,
`${sessionId}/${filename} session snapshot OPFS path drift`,
);
}
assert.equal(await getOpfsRoot(storage), root);
assert.equal(normalizeOpfsPath("linuxcnc/machines/xyzab.ini"), "linuxcnc/machines/xyzab.ini");
@@ -115,10 +123,14 @@ assertGcodeProgramStoragePath(
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(
assertSessionSnapshotStoragePath(
"session-1",
sessionSnapshotPath("session-1"),
);
assertSessionSnapshotStoragePath(
"session-1",
sessionSnapshotPath("session-1", "custom-snapshot.json"),
"linuxcnc/sessions/session-1/custom-snapshot.json",
"custom-snapshot.json",
);
assert.deepEqual(defaultMachinePaths("xyzab-tdr"), {
ini: "linuxcnc/machines/xyzab-tdr/machine.ini",
@@ -182,6 +194,10 @@ await saveSessionSnapshot("session-1", snapshotPayload, {
createdAt: "2026-06-08T00:00:00.000Z",
metadata: { source: "node-smoke" },
});
assertSessionSnapshotStoragePath(
"session-1",
sessionSnapshotPath("session-1"),
);
assert.deepEqual(await loadSessionSnapshot("session-1", { storage }), snapshot);
const customSnapshot = await saveSessionSnapshot("session-1", snapshotPayload, {
storage,
@@ -189,6 +205,11 @@ const customSnapshot = await saveSessionSnapshot("session-1", snapshotPayload, {
createdAt: "2026-06-08T00:00:00.000Z",
metadata: { source: "node-smoke-custom" },
});
assertSessionSnapshotStoragePath(
"session-1",
sessionSnapshotPath("session-1", "custom-snapshot.json"),
"custom-snapshot.json",
);
assert.equal(
customSnapshot.metadata.source,
"node-smoke-custom",