Guard browser OPFS tool-table staging
This commit is contained in:
67
text7.txt
67
text7.txt
@@ -1154,3 +1154,70 @@ filesystem/OPFS path guard,不改变 tool table、INI 或 session runtime sema
|
|||||||
```bash
|
```bash
|
||||||
git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d
|
git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
二十一、2026-06-13 继续执行记录:browser OPFS tool-table staging guard
|
||||||
|
|
||||||
|
1. 本批目标。
|
||||||
|
|
||||||
|
继续 staged path guard inventory 第十六轮,处理 browser OPFS/session tool-table
|
||||||
|
boundary path:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/work/browser-tool.tbl
|
||||||
|
/work/browser-random-tool.tbl
|
||||||
|
/work/browser-custom-tool.tbl
|
||||||
|
/work/browser-explicit-tool.tbl
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 已完成改动。
|
||||||
|
|
||||||
|
- browser 侧新增 `assertOpfsToolTableStaging(...)`;
|
||||||
|
- 默认 machine session 的 load/save tool table 均检查 OPFS path 与 WASM path;
|
||||||
|
- random toolchanger session 的 load/save tool table 均检查 OPFS path 与 WASM path;
|
||||||
|
- INI `TOOL_TABLE` 命名 session 的 load/save tool table 均检查 OPFS path 与 WASM path;
|
||||||
|
- explicit override session 的 load/save tool table 均检查 OPFS path 与 WASM path;
|
||||||
|
- 复用 `generatedToolTablePath(...)` 校验 WASM staged path;
|
||||||
|
- 未修改 OPFS 存储内容、tool table 内容、INI 解析、random toolchanger 行为或 session
|
||||||
|
runtime semantics。
|
||||||
|
|
||||||
|
涉及文件:
|
||||||
|
|
||||||
|
```text
|
||||||
|
wasm-port/tests/browser/interp_smoke.html
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 已完成的目标验证。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 本批剩余建议验证。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wasm-port/tools/verify_vendor_sync.sh
|
||||||
|
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||||||
|
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||||||
|
wasm-port/tests/host/verify_host_smokes.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
如果通过,提交建议:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Guard browser OPFS tool-table staging
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 下一步工作建议。
|
||||||
|
|
||||||
|
继续 staged path guard inventory 第十七轮,优先处理 browser OPFS/session parameter
|
||||||
|
path guard,例如 `/work/browser-linuxcnc.var`、`/work/browser-random-linuxcnc.var`、
|
||||||
|
`/work/browser-custom.var`、`/work/browser-explicit.var`;仍只加 filesystem/OPFS path
|
||||||
|
guard,不改变 parameter、INI 或 session runtime semantics。
|
||||||
|
|
||||||
|
下一轮第一条命令仍保持:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git status --short && git log -5 --oneline && tail -n 120 text7.txt && awk '/^[一二三四五六七八九十百]+、/ {print}' text7.txt | sort | uniq -d
|
||||||
|
```
|
||||||
|
|||||||
@@ -4472,6 +4472,13 @@
|
|||||||
return checkedPath;
|
return checkedPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assertOpfsToolTableStaging(label, toolTable, expectedOpfsPath, expectedWasmPath) {
|
||||||
|
if (toolTable.opfsPath !== expectedOpfsPath) {
|
||||||
|
throw new Error(`${label}: unexpected tool table OPFS path ${toolTable.opfsPath}`);
|
||||||
|
}
|
||||||
|
generatedToolTablePath(toolTable.wasmPath, expectedWasmPath);
|
||||||
|
}
|
||||||
|
|
||||||
async function loadSimMachineFiles(machineRel, iniFile, programFile = null) {
|
async function loadSimMachineFiles(machineRel, iniFile, programFile = null) {
|
||||||
const iniText = await fetchText(
|
const iniText = await fetchText(
|
||||||
`../../vendor/linuxcnc/configs/sim/${machineRel}/${iniFile}`,
|
`../../vendor/linuxcnc/configs/sim/${machineRel}/${iniFile}`,
|
||||||
@@ -8977,6 +8984,12 @@
|
|||||||
toolTableWasmPath: "/work/browser-tool.tbl",
|
toolTableWasmPath: "/work/browser-tool.tbl",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_load_tool_table_staging",
|
||||||
|
loadedSession.toolTable,
|
||||||
|
"linuxcnc/machines/browser-interp/tool.tbl",
|
||||||
|
"/work/browser-tool.tbl",
|
||||||
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_restore_parameters",
|
"opfs_restore_parameters",
|
||||||
loadedSession.parameters.result,
|
loadedSession.parameters.result,
|
||||||
@@ -9061,6 +9074,12 @@
|
|||||||
"browser-interp",
|
"browser-interp",
|
||||||
{ wasmPath: "/work/browser-tool.tbl" },
|
{ wasmPath: "/work/browser-tool.tbl" },
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_save_tool_table_staging",
|
||||||
|
savedToolTable,
|
||||||
|
"linuxcnc/machines/browser-interp/tool.tbl",
|
||||||
|
"/work/browser-tool.tbl",
|
||||||
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_save_tool_table",
|
"opfs_save_tool_table",
|
||||||
savedToolTable.result,
|
savedToolTable.result,
|
||||||
@@ -9119,18 +9138,18 @@
|
|||||||
toolTableWasmPath: "/work/browser-random-tool.tbl",
|
toolTableWasmPath: "/work/browser-random-tool.tbl",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_load_random_tool_table_staging",
|
||||||
|
loadedRandomSession.toolTable,
|
||||||
|
"linuxcnc/machines/browser-random-toolchanger/tool.tbl",
|
||||||
|
"/work/browser-random-tool.tbl",
|
||||||
|
);
|
||||||
if (
|
if (
|
||||||
loadedRandomSession.parameters.opfsPath !==
|
loadedRandomSession.parameters.opfsPath !==
|
||||||
"linuxcnc/machines/browser-random-toolchanger/linuxcnc.var"
|
"linuxcnc/machines/browser-random-toolchanger/linuxcnc.var"
|
||||||
) {
|
) {
|
||||||
throw new Error(`unexpected default parameter path: ${loadedRandomSession.parameters.opfsPath}`);
|
throw new Error(`unexpected default parameter path: ${loadedRandomSession.parameters.opfsPath}`);
|
||||||
}
|
}
|
||||||
if (
|
|
||||||
loadedRandomSession.toolTable.opfsPath !==
|
|
||||||
"linuxcnc/machines/browser-random-toolchanger/tool.tbl"
|
|
||||||
) {
|
|
||||||
throw new Error(`unexpected default tool path: ${loadedRandomSession.toolTable.opfsPath}`);
|
|
||||||
}
|
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_load_random_tool_table",
|
"opfs_load_random_tool_table",
|
||||||
loadedRandomSession.toolTable.result,
|
loadedRandomSession.toolTable.result,
|
||||||
@@ -9155,6 +9174,12 @@
|
|||||||
"browser-random-toolchanger",
|
"browser-random-toolchanger",
|
||||||
{ wasmPath: "/work/browser-random-tool.tbl" },
|
{ wasmPath: "/work/browser-random-tool.tbl" },
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_save_random_tool_table_staging",
|
||||||
|
savedRandomToolTable,
|
||||||
|
"linuxcnc/machines/browser-random-toolchanger/tool.tbl",
|
||||||
|
"/work/browser-random-tool.tbl",
|
||||||
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_save_random_tool_table",
|
"opfs_save_random_tool_table",
|
||||||
savedRandomToolTable.result,
|
savedRandomToolTable.result,
|
||||||
@@ -9218,18 +9243,18 @@
|
|||||||
toolTableWasmPath: "/work/browser-custom-tool.tbl",
|
toolTableWasmPath: "/work/browser-custom-tool.tbl",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
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",
|
||||||
|
);
|
||||||
if (
|
if (
|
||||||
loadedIniFileSession.parameters.opfsPath !==
|
loadedIniFileSession.parameters.opfsPath !==
|
||||||
"linuxcnc/machines/browser-ini-file-session/browser-custom.var"
|
"linuxcnc/machines/browser-ini-file-session/browser-custom.var"
|
||||||
) {
|
) {
|
||||||
throw new Error(`unexpected custom parameter path: ${loadedIniFileSession.parameters.opfsPath}`);
|
throw new Error(`unexpected custom parameter path: ${loadedIniFileSession.parameters.opfsPath}`);
|
||||||
}
|
}
|
||||||
if (
|
|
||||||
loadedIniFileSession.toolTable.opfsPath !==
|
|
||||||
"linuxcnc/machines/browser-ini-file-session/browser-custom-tool.tbl"
|
|
||||||
) {
|
|
||||||
throw new Error(`unexpected custom tool path: ${loadedIniFileSession.toolTable.opfsPath}`);
|
|
||||||
}
|
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_load_ini_named_parameter_file",
|
"opfs_load_ini_named_parameter_file",
|
||||||
loadedIniFileSession.parameters.result,
|
loadedIniFileSession.parameters.result,
|
||||||
@@ -9319,6 +9344,12 @@
|
|||||||
wasmPath: loadedIniFileSession.toolTable.wasmPath,
|
wasmPath: loadedIniFileSession.toolTable.wasmPath,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_save_ini_named_tool_table_staging",
|
||||||
|
savedIniNamedToolTable,
|
||||||
|
"linuxcnc/machines/browser-ini-file-session/browser-custom-tool.tbl",
|
||||||
|
"/work/browser-custom-tool.tbl",
|
||||||
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_save_ini_named_tool_table",
|
"opfs_save_ini_named_tool_table",
|
||||||
savedIniNamedToolTable.result,
|
savedIniNamedToolTable.result,
|
||||||
@@ -9380,18 +9411,18 @@
|
|||||||
toolTableWasmPath: "/work/browser-explicit-tool.tbl",
|
toolTableWasmPath: "/work/browser-explicit-tool.tbl",
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
assertOpfsToolTableStaging(
|
||||||
|
"opfs_load_explicit_tool_table_staging",
|
||||||
|
loadedIniOverrideSession.toolTable,
|
||||||
|
"linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl",
|
||||||
|
"/work/browser-explicit-tool.tbl",
|
||||||
|
);
|
||||||
if (
|
if (
|
||||||
loadedIniOverrideSession.parameters.opfsPath !==
|
loadedIniOverrideSession.parameters.opfsPath !==
|
||||||
"linuxcnc/machines/browser-ini-override-session/browser-explicit.var"
|
"linuxcnc/machines/browser-ini-override-session/browser-explicit.var"
|
||||||
) {
|
) {
|
||||||
throw new Error(`unexpected explicit parameter path: ${loadedIniOverrideSession.parameters.opfsPath}`);
|
throw new Error(`unexpected explicit parameter path: ${loadedIniOverrideSession.parameters.opfsPath}`);
|
||||||
}
|
}
|
||||||
if (
|
|
||||||
loadedIniOverrideSession.toolTable.opfsPath !==
|
|
||||||
"linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl"
|
|
||||||
) {
|
|
||||||
throw new Error(`unexpected explicit tool path: ${loadedIniOverrideSession.toolTable.opfsPath}`);
|
|
||||||
}
|
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_load_explicit_parameter_file",
|
"opfs_load_explicit_parameter_file",
|
||||||
loadedIniOverrideSession.parameters.result,
|
loadedIniOverrideSession.parameters.result,
|
||||||
@@ -9481,12 +9512,12 @@
|
|||||||
wasmPath: loadedIniOverrideSession.toolTable.wasmPath,
|
wasmPath: loadedIniOverrideSession.toolTable.wasmPath,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
if (
|
assertOpfsToolTableStaging(
|
||||||
savedExplicitToolTable.opfsPath !==
|
"opfs_save_explicit_tool_table_staging",
|
||||||
"linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl"
|
savedExplicitToolTable,
|
||||||
) {
|
"linuxcnc/machines/browser-ini-override-session/browser-explicit-tool.tbl",
|
||||||
throw new Error(`unexpected explicit saved tool path: ${savedExplicitToolTable.opfsPath}`);
|
"/work/browser-explicit-tool.tbl",
|
||||||
}
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"opfs_save_explicit_tool_table",
|
"opfs_save_explicit_tool_table",
|
||||||
savedExplicitToolTable.result,
|
savedExplicitToolTable.result,
|
||||||
|
|||||||
Reference in New Issue
Block a user