Guard browser OPFS tool-table object adapters

This commit is contained in:
2026-06-14 07:15:00 +08:00
parent 45d34c8586
commit 58215c24cc
2 changed files with 79 additions and 36 deletions

View File

@@ -728,3 +728,56 @@ host_wasm_opfs_browser_smokes=ok
`opfsToolTableSeedTextForTool(...)` / `opfsToolTableTextLinesForTool(...)` object
adapter减少普通 OPFS tool-table 调用点的参数展开;只改测试胶水,不改变输入、
OPFS path、WASM path 字符串或保存/读取行为。
十六、2026-06-14 继续执行记录browser OPFS tool-table object adapter guard
本轮按上一条下一步建议继续收敛普通 OPFS tool-table helper 调用点的参数展开,
范围仍只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
完成内容:
- 新增 `opfsToolTableTextLinesForTool(...)`,从显式 tool object locals 转发到
`opfsToolTableTextLines(...)`
- 新增 `opfsToolTableSeedTextForTool(...)`,从显式 tool object locals 转发到
`opfsToolTableSeedText(...)`
- direct `browser-interp` ordinary tool-table readback 改为复用
`opfsToolTableTextLinesForTool(...)`,并继续显式保留 `I/J/Q` readback lines
- INI-named 与 explicit custom session ordinary tool-table seed/readback 调用点改为
复用 object adapter
- adapter 只转发已显式保存的 object 字段,不推导 LinuxCNC-owned tool-table 格式;
- 未改变任何 expected 字符串、输入、OPFS path、WASM path 字符串或 save/read/load
行为;
- 未改变 staging path 模型、OPFS bridge behavior、file-service、SDK planner、
interpreter、INI、tool、parameter 或 LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
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
browser_interp_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续小批量 browser test glue guard。优先扫描 ordinary OPFS tool-table load/save
result 调用点是否值得新增 `opfsToolTableResultLinesForTool(...)` object adapter
只改测试胶水不改变输入、OPFS path、WASM path 字符串或保存/读取行为。

View File

@@ -4619,6 +4619,17 @@
];
}
function opfsToolTableTextLinesForTool(tool, extraLines = []) {
return opfsToolTableTextLines(
tool.toolNo,
tool.pocketNo,
tool.readbackZOffset,
tool.readbackDiameter,
tool.comment,
extraLines,
);
}
function opfsToolTableToolValues(
toolNo,
pocketNo,
@@ -4682,6 +4693,16 @@
return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`;
}
function opfsToolTableSeedTextForTool(tool) {
return opfsToolTableSeedText(
tool.toolNo,
tool.pocketNo,
tool.zOffset,
tool.diameter,
tool.comment,
);
}
function opfsCustomSessionIniText(machineId, parameterFilename, toolTableFilename) {
return [
"[EMC]",
@@ -9507,14 +9528,7 @@
"opfs_saved_tool_table_text",
browserInterpMachineId,
"toolTable",
opfsToolTableTextLines(
browserInterpToolTable.toolNo,
browserInterpToolTable.pocketNo,
browserInterpToolTable.readbackZOffset,
browserInterpToolTable.readbackDiameter,
browserInterpToolTable.comment,
["I+12.000000", "J+34.000000", "Q4"],
),
opfsToolTableTextLinesForTool(browserInterpToolTable, ["I+12.000000", "J+34.000000", "Q4"]),
);
const browserRandomMachineId = "browser-random-toolchanger";
@@ -9651,13 +9665,7 @@
await writeOpfsMachineFile(
iniFileMachineId,
iniFileToolTableFilename,
opfsToolTableSeedText(
iniNamedToolTable.toolNo,
iniNamedToolTable.pocketNo,
iniNamedToolTable.zOffset,
iniNamedToolTable.diameter,
iniNamedToolTable.comment,
),
opfsToolTableSeedTextForTool(iniNamedToolTable),
);
const loadedIniFileSession = await loadMachineSessionFromOpfs(
interp,
@@ -9747,13 +9755,7 @@
await verifyOpfsReadback(
"opfs_saved_ini_named_tool_table_text",
loadedIniFileSession.toolTable.opfsPath,
opfsToolTableTextLines(
iniNamedToolTable.toolNo,
iniNamedToolTable.pocketNo,
iniNamedToolTable.readbackZOffset,
iniNamedToolTable.readbackDiameter,
iniNamedToolTable.comment,
),
opfsToolTableTextLinesForTool(iniNamedToolTable),
);
const iniOverrideMachineId = "browser-ini-override-session";
@@ -9794,13 +9796,7 @@
await writeOpfsMachineFile(
iniOverrideMachineId,
explicitToolTableFilename,
opfsToolTableSeedText(
explicitToolTable.toolNo,
explicitToolTable.pocketNo,
explicitToolTable.zOffset,
explicitToolTable.diameter,
explicitToolTable.comment,
),
opfsToolTableSeedTextForTool(explicitToolTable),
);
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
interp,
@@ -9894,13 +9890,7 @@
await verifyOpfsReadback(
"opfs_saved_explicit_tool_table_text",
loadedIniOverrideSession.toolTable.opfsPath,
opfsToolTableTextLines(
explicitToolTable.toolNo,
explicitToolTable.pocketNo,
explicitToolTable.readbackZOffset,
explicitToolTable.readbackDiameter,
explicitToolTable.comment,
),
opfsToolTableTextLinesForTool(explicitToolTable),
);
await verifyOpfsInvalidIniSessionRejects(