Guard browser OPFS custom session staging

This commit is contained in:
2026-06-13 22:10:33 +08:00
parent 40f95af188
commit ff6dd315ee
2 changed files with 115 additions and 47 deletions

View File

@@ -4511,27 +4511,33 @@
generatedToolTablePath(toolTable.wasmPath, expectedWasmPath);
}
function assertOpfsSessionStaging(label, session, machineId, expectedWasmPaths) {
function assertOpfsSessionStaging(label, session, machineId, expectedPaths) {
if (session.machineId !== machineId) {
throw new Error(`${label}: unexpected machine id ${session.machineId}`);
}
const expectedOpfsPaths = {
ini: `linuxcnc/machines/${machineId}/machine.ini`,
parameters: `linuxcnc/machines/${machineId}/linuxcnc.var`,
toolTable: `linuxcnc/machines/${machineId}/tool.tbl`,
...(expectedPaths.opfs ?? {}),
};
assertOpfsIniStaging(
`${label}_ini`,
session.ini,
`linuxcnc/machines/${machineId}/machine.ini`,
expectedWasmPaths.ini,
expectedOpfsPaths.ini,
expectedPaths.wasm.ini,
);
assertOpfsToolTableStaging(
`${label}_tool_table`,
session.toolTable,
`linuxcnc/machines/${machineId}/tool.tbl`,
expectedWasmPaths.toolTable,
expectedOpfsPaths.toolTable,
expectedPaths.wasm.toolTable,
);
assertOpfsParameterStaging(
`${label}_parameters`,
session.parameters,
`linuxcnc/machines/${machineId}/linuxcnc.var`,
expectedWasmPaths.parameters,
expectedOpfsPaths.parameters,
expectedPaths.wasm.parameters,
);
}
@@ -9081,9 +9087,11 @@
loadedSession,
"browser-interp",
{
ini: "/work/browser-machine.ini",
parameters: "/work/browser-linuxcnc.var",
toolTable: "/work/browser-tool.tbl",
wasm: {
ini: "/work/browser-machine.ini",
parameters: "/work/browser-linuxcnc.var",
toolTable: "/work/browser-tool.tbl",
},
},
);
verifyExpectedOutput(
@@ -9245,9 +9253,11 @@
loadedRandomSession,
"browser-random-toolchanger",
{
ini: "/work/browser-random-machine.ini",
parameters: "/work/browser-random-linuxcnc.var",
toolTable: "/work/browser-random-tool.tbl",
wasm: {
ini: "/work/browser-random-machine.ini",
parameters: "/work/browser-random-linuxcnc.var",
toolTable: "/work/browser-random-tool.tbl",
},
},
);
verifyExpectedOutput(
@@ -9348,23 +9358,21 @@
toolTableWasmPath: "/work/browser-custom-tool.tbl",
},
);
assertOpfsIniStaging(
"opfs_load_ini_named_ini_staging",
loadedIniFileSession.ini,
"linuxcnc/machines/browser-ini-file-session/machine.ini",
"/work/browser-ini-file-session.ini",
);
assertOpfsToolTableStaging(
"opfs_load_ini_named_tool_table_staging",
loadedIniFileSession.toolTable,
"linuxcnc/machines/browser-ini-file-session/browser-custom-tool.tbl",
"/work/browser-custom-tool.tbl",
);
assertOpfsParameterStaging(
"opfs_load_ini_named_parameters_staging",
loadedIniFileSession.parameters,
"linuxcnc/machines/browser-ini-file-session/browser-custom.var",
"/work/browser-custom.var",
assertOpfsSessionStaging(
"opfs_load_ini_named_session_staging",
loadedIniFileSession,
"browser-ini-file-session",
{
opfs: {
parameters: "linuxcnc/machines/browser-ini-file-session/browser-custom.var",
toolTable: "linuxcnc/machines/browser-ini-file-session/browser-custom-tool.tbl",
},
wasm: {
ini: "/work/browser-ini-file-session.ini",
parameters: "/work/browser-custom.var",
toolTable: "/work/browser-custom-tool.tbl",
},
},
);
verifyExpectedOutput(
"opfs_load_ini_named_parameter_file",
@@ -9522,23 +9530,21 @@
toolTableWasmPath: "/work/browser-explicit-tool.tbl",
},
);
assertOpfsIniStaging(
"opfs_load_explicit_ini_staging",
loadedIniOverrideSession.ini,
"linuxcnc/machines/browser-ini-override-session/machine.ini",
"/work/browser-ini-override-session.ini",
);
assertOpfsToolTableStaging(
"opfs_load_explicit_tool_table_staging",
loadedIniOverrideSession.toolTable,
"linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl",
"/work/browser-explicit-tool.tbl",
);
assertOpfsParameterStaging(
"opfs_load_explicit_parameters_staging",
loadedIniOverrideSession.parameters,
"linuxcnc/machines/browser-ini-override-session/browser-explicit.var",
"/work/browser-explicit.var",
assertOpfsSessionStaging(
"opfs_load_explicit_session_staging",
loadedIniOverrideSession,
"browser-ini-override-session",
{
opfs: {
parameters: "linuxcnc/machines/browser-ini-override-session/browser-explicit.var",
toolTable: "linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl",
},
wasm: {
ini: "/work/browser-ini-override-session.ini",
parameters: "/work/browser-explicit.var",
toolTable: "/work/browser-explicit-tool.tbl",
},
},
);
verifyExpectedOutput(
"opfs_load_explicit_parameter_file",