diff --git a/text9.txt b/text9.txt index f9a037b..255e4d0 100644 --- a/text9.txt +++ b/text9.txt @@ -624,3 +624,55 @@ host_wasm_opfs_browser_smokes=ok value groups,看是否能像 direct session 一样用 tool object locals 表达 load、 save、readback 三组 expected lines;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 + +十四、2026-06-14 继续执行记录:browser custom session tool-table value object guard + +本轮按上一条下一步建议继续收敛 custom session 普通 tool-table load/save/readback +value groups,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 新增 `opfsToolTableToolValues(...)`,用显式 object locals 承载普通 OPFS + tool-table 的 seed、load result 与 readback expected 值; +- `iniNamedToolTable*` 三组并行数组收敛为 `iniNamedToolTable` object; +- `explicitToolTable*` 三组并行数组收敛为 `explicitToolTable` object; +- `loadComment`、`readbackZOffset` 与 `readbackDiameter` 继续显式传入,避免在 + browser test glue 中推导 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。优先扫描 direct `browser-interp` ordinary +tool-table value groups 是否也能复用 `opfsToolTableToolValues(...)`,或把 +`opfsToolTableSeedText(...)` / `opfsToolTableTextLines(...)` 调用收敛成 object +adapter;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 411c07e..729155d 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4619,6 +4619,28 @@ ]; } + function opfsToolTableToolValues( + toolNo, + pocketNo, + zOffset, + diameter, + comment, + loadComment, + readbackZOffset, + readbackDiameter, + ) { + return { + toolNo, + pocketNo, + zOffset, + diameter, + comment, + loadComment, + readbackZOffset, + readbackDiameter, + }; + } + function toolTableResultLines(tools) { return tools.flatMap((tool) => tool.resultLines); } @@ -9610,13 +9632,26 @@ iniFileParameterFilename, opfsParameterSeedText(...iniNamedInitialParameterValues), ); - const iniNamedToolTableValues = ["8", "8", "4.5", "0.5", ";browser custom tool"]; - const iniNamedToolTableLoadValues = ["8", "8", "4.5", "0.5", "browser custom tool"]; - const iniNamedToolTableReadbackValues = ["8", "8", "+4.500000", "+0.500000", ";browser custom tool"]; + const iniNamedToolTable = opfsToolTableToolValues( + "8", + "8", + "4.5", + "0.5", + ";browser custom tool", + "browser custom tool", + "+4.500000", + "+0.500000", + ); await writeOpfsMachineFile( iniFileMachineId, iniFileToolTableFilename, - opfsToolTableSeedText(...iniNamedToolTableValues), + opfsToolTableSeedText( + iniNamedToolTable.toolNo, + iniNamedToolTable.pocketNo, + iniNamedToolTable.zOffset, + iniNamedToolTable.diameter, + iniNamedToolTable.comment, + ), ); const loadedIniFileSession = await loadMachineSessionFromOpfs( interp, @@ -9680,10 +9715,10 @@ verifyOpfsLoadResult( "opfs_load_ini_named_tool_table", loadedIniFileSession.toolTable, - opfsToolTableResultLines("load", iniNamedToolTableLoadValues[0], iniNamedToolTableLoadValues[1], [ - `tool_1.z=${iniNamedToolTableLoadValues[2]}`, - `tool_1.diameter=${iniNamedToolTableLoadValues[3]}`, - `tool_1.comment=${iniNamedToolTableLoadValues[4]}`, + opfsToolTableResultLines("load", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo, [ + `tool_1.z=${iniNamedToolTable.zOffset}`, + `tool_1.diameter=${iniNamedToolTable.diameter}`, + `tool_1.comment=${iniNamedToolTable.loadComment}`, ]), ); const savedIniNamedToolTable = await saveMachineToolTableToOpfs( @@ -9701,12 +9736,18 @@ verifyOpfsSaveResult( "opfs_save_ini_named_tool_table", savedIniNamedToolTable, - opfsToolTableResultLines("save", iniNamedToolTableValues[0], iniNamedToolTableValues[1]), + opfsToolTableResultLines("save", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo), ); await verifyOpfsReadback( "opfs_saved_ini_named_tool_table_text", loadedIniFileSession.toolTable.opfsPath, - opfsToolTableTextLines(...iniNamedToolTableReadbackValues), + opfsToolTableTextLines( + iniNamedToolTable.toolNo, + iniNamedToolTable.pocketNo, + iniNamedToolTable.readbackZOffset, + iniNamedToolTable.readbackDiameter, + iniNamedToolTable.comment, + ), ); const iniOverrideMachineId = "browser-ini-override-session"; @@ -9734,13 +9775,26 @@ explicitParameterFilename, opfsParameterSeedText(...explicitInitialParameterValues), ); - const explicitToolTableValues = ["9", "9", "5.5", "0.625", ";browser explicit tool"]; - const explicitToolTableLoadValues = ["9", "9", "5.5", "0.625", "browser explicit tool"]; - const explicitToolTableReadbackValues = ["9", "9", "+5.500000", "+0.625000", ";browser explicit tool"]; + const explicitToolTable = opfsToolTableToolValues( + "9", + "9", + "5.5", + "0.625", + ";browser explicit tool", + "browser explicit tool", + "+5.500000", + "+0.625000", + ); await writeOpfsMachineFile( iniOverrideMachineId, explicitToolTableFilename, - opfsToolTableSeedText(...explicitToolTableValues), + opfsToolTableSeedText( + explicitToolTable.toolNo, + explicitToolTable.pocketNo, + explicitToolTable.zOffset, + explicitToolTable.diameter, + explicitToolTable.comment, + ), ); const loadedIniOverrideSession = await loadMachineSessionFromOpfs( interp, @@ -9777,10 +9831,10 @@ verifyOpfsLoadResult( "opfs_load_explicit_tool_table", loadedIniOverrideSession.toolTable, - opfsToolTableResultLines("load", explicitToolTableLoadValues[0], explicitToolTableLoadValues[1], [ - `tool_1.z=${explicitToolTableLoadValues[2]}`, - `tool_1.diameter=${explicitToolTableLoadValues[3]}`, - `tool_1.comment=${explicitToolTableLoadValues[4]}`, + opfsToolTableResultLines("load", explicitToolTable.toolNo, explicitToolTable.pocketNo, [ + `tool_1.z=${explicitToolTable.zOffset}`, + `tool_1.diameter=${explicitToolTable.diameter}`, + `tool_1.comment=${explicitToolTable.loadComment}`, ]), ); const explicitParameterValues = [51.25, 102.5, 7.5, 202]; @@ -9829,12 +9883,18 @@ verifyOpfsSaveResult( "opfs_save_explicit_tool_table", savedExplicitToolTable, - opfsToolTableResultLines("save", explicitToolTableValues[0], explicitToolTableValues[1]), + opfsToolTableResultLines("save", explicitToolTable.toolNo, explicitToolTable.pocketNo), ); await verifyOpfsReadback( "opfs_saved_explicit_tool_table_text", loadedIniOverrideSession.toolTable.opfsPath, - opfsToolTableTextLines(...explicitToolTableReadbackValues), + opfsToolTableTextLines( + explicitToolTable.toolNo, + explicitToolTable.pocketNo, + explicitToolTable.readbackZOffset, + explicitToolTable.readbackDiameter, + explicitToolTable.comment, + ), ); await verifyOpfsInvalidIniSessionRejects(