Guard browser OPFS tool-table result adapter

This commit is contained in:
2026-06-14 07:22:59 +08:00
parent 58215c24cc
commit 6ac7cc8953
2 changed files with 71 additions and 6 deletions

View File

@@ -781,3 +781,64 @@ host_wasm_opfs_browser_smokes=ok
继续小批量 browser test glue guard。优先扫描 ordinary OPFS tool-table load/save
result 调用点是否值得新增 `opfsToolTableResultLinesForTool(...)` object adapter
只改测试胶水不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
十七、2026-06-14 继续执行记录browser OPFS tool-table result object adapter guard
本轮按上一条下一步建议继续收敛普通 OPFS tool-table load/save result helper 调用点
的参数展开,范围仍只触及
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
完成内容:
- 新增 `opfsToolTableResultLinesForTool(...)`,从显式 tool object locals 转发到
`opfsToolTableResultLines(...)`
- direct `browser-interp` ordinary tool-table load/save result 调用点改为复用
`opfsToolTableResultLinesForTool(...)`
- INI-named 与 explicit custom session ordinary tool-table load/save result 调用点改为
复用 `opfsToolTableResultLinesForTool(...)`
- load result 的 front angle、back angle、orientation、comment 与
`tool_index_for_tool_2=1` 等 extra lines 仍保留在调用点,保持语义边界外显;
- 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
```
备注:
- 当前 sandbox 会拦截本地 HTTP server socket bind`verify_host_smokes.sh` 首次在
browser smoke 阶段因 `PermissionError: [Errno 1] Operation not permitted` 失败;
- 已按规则授权重跑 `wasm-port/tests/host/verify_host_smokes.sh`,重跑通过。
下一步建议:
继续小批量 browser test glue guard。优先扫描普通 OPFS tool-table object helper
是否还能合并命名或减少重复 adapter如果收益不明显转向 parameter result/text 的
object adapter 收敛只改测试胶水不改变输入、OPFS path、WASM path 字符串或
保存/读取行为。

View File

@@ -4608,6 +4608,10 @@
];
}
function opfsToolTableResultLinesForTool(operation, tool, extraLines = []) {
return opfsToolTableResultLines(operation, tool.toolNo, tool.pocketNo, extraLines);
}
function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment, extraLines = []) {
return [
`T${toolNo}`,
@@ -9459,7 +9463,7 @@
verifyOpfsLoadResult(
"opfs_load_tool_table",
loadedSession.toolTable,
opfsToolTableResultLines("load", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo, [
opfsToolTableResultLinesForTool("load", browserInterpToolTable, [
`tool_1.z=${browserInterpToolTable.zOffset}`,
`tool_1.diameter=${browserInterpToolTable.diameter}`,
"tool_1.frontangle=12",
@@ -9522,7 +9526,7 @@
verifyOpfsSaveResult(
"opfs_save_tool_table",
savedToolTable,
opfsToolTableResultLines("save", browserInterpToolTable.toolNo, browserInterpToolTable.pocketNo),
opfsToolTableResultLinesForTool("save", browserInterpToolTable),
);
await verifyOpfsMachineFileReadback(
"opfs_saved_tool_table_text",
@@ -9729,7 +9733,7 @@
verifyOpfsLoadResult(
"opfs_load_ini_named_tool_table",
loadedIniFileSession.toolTable,
opfsToolTableResultLines("load", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo, [
opfsToolTableResultLinesForTool("load", iniNamedToolTable, [
`tool_1.z=${iniNamedToolTable.zOffset}`,
`tool_1.diameter=${iniNamedToolTable.diameter}`,
`tool_1.comment=${iniNamedToolTable.loadComment}`,
@@ -9750,7 +9754,7 @@
verifyOpfsSaveResult(
"opfs_save_ini_named_tool_table",
savedIniNamedToolTable,
opfsToolTableResultLines("save", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo),
opfsToolTableResultLinesForTool("save", iniNamedToolTable),
);
await verifyOpfsReadback(
"opfs_saved_ini_named_tool_table_text",
@@ -9833,7 +9837,7 @@
verifyOpfsLoadResult(
"opfs_load_explicit_tool_table",
loadedIniOverrideSession.toolTable,
opfsToolTableResultLines("load", explicitToolTable.toolNo, explicitToolTable.pocketNo, [
opfsToolTableResultLinesForTool("load", explicitToolTable, [
`tool_1.z=${explicitToolTable.zOffset}`,
`tool_1.diameter=${explicitToolTable.diameter}`,
`tool_1.comment=${explicitToolTable.loadComment}`,
@@ -9885,7 +9889,7 @@
verifyOpfsSaveResult(
"opfs_save_explicit_tool_table",
savedExplicitToolTable,
opfsToolTableResultLines("save", explicitToolTable.toolNo, explicitToolTable.pocketNo),
opfsToolTableResultLinesForTool("save", explicitToolTable),
);
await verifyOpfsReadback(
"opfs_saved_explicit_tool_table_text",