diff --git a/text9.txt b/text9.txt index 7ec1256..4ed2f8f 100644 --- a/text9.txt +++ b/text9.txt @@ -351,3 +351,61 @@ host_wasm_opfs_browser_smokes=ok 的 tool-table load/save/readback expected lines 是否能用现有 helper 或局部常量收敛; 只改测试胶水,不改变 random toolchanger 输入、OPFS path、WASM path 字符串或 保存/读取行为。 + +九、2026-06-14 继续执行记录:browser OPFS random session tool-table helper guard + +本轮按上一条下一步建议继续收敛 direct random toolchanger session 的 tool-table +load/save/readback expected lines,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 新增 `opfsRandomToolTableResultLines(...)`,统一 random toolchanger load/save + result expected lines 的拼装; +- 新增 `opfsRandomToolTableTextLines(...)`,统一 random toolchanger saved + tool-table readback expected lines 的拼装; +- 为 direct random toolchanger session 增加 `browserRandomFinishTool`、 + `browserRandomRoughTool` 与 `browserRandomTools` 局部常量; +- `opfs_load_random_tool_table` expected lines 改为复用 + `opfsRandomToolTableResultLines("load", ...)`,并继续显式保留 + `tooldata_random_toolchanger=1` 和 `tool_index_for_tool_2=7`; +- `opfs_save_random_tool_table` expected lines 改为复用 + `opfsRandomToolTableResultLines("save", ...)`; +- `opfs_saved_random_tool_table_text` expected lines 改为复用 + `opfsRandomToolTableTextLines(...)`; +- 未改变 random toolchanger 输入、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 OPFS test glue guard。优先扫描 direct generated random +toolchanger file block 中的 load/save/readback expected lines 是否也能复用 +`opfsRandomToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated +file input、WASM path 字符串或保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index d36bf8d..8142c6a 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4619,6 +4619,22 @@ ]; } + function opfsRandomToolTableResultLines(operation, tools) { + return [ + ...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []), + `tooldata_${operation}=0`, + ...tools.flatMap((tool) => tool.resultLines), + ]; + } + + function opfsRandomToolTableTextLines(tools) { + return tools.flatMap((tool) => [ + `T${tool.toolNo}`, + `P${tool.pocketNo}`, + tool.comment, + ]); + } + function opfsToolTableSeedText(toolNo, pocketNo, zOffset, diameter, comment) { return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`; } @@ -9440,6 +9456,31 @@ const browserRandomMachineId = "browser-random-toolchanger"; const browserRandomWasmPaths = opfsBrowserSessionWasmPaths("browser-random"); + const browserRandomFinishTool = { + toolNo: "2", + pocketNo: "7", + comment: ";browser random finish tool", + resultLines: [ + "tool_pocket_7.toolno=2", + "tool_pocket_7.pocketno=7", + "tool_pocket_7.z=3.125", + "tool_pocket_7.diameter=1.5", + "tool_pocket_7.frontangle=12", + "tool_pocket_7.backangle=34", + "tool_pocket_7.orientation=4", + "tool_pocket_7.comment=browser random finish tool", + ], + }; + const browserRandomRoughTool = { + toolNo: "5", + pocketNo: "9", + comment: ";browser random rough tool", + resultLines: [ + "tool_pocket_9.toolno=5", + "tool_pocket_9.pocketno=9", + ], + }; + const browserRandomTools = [browserRandomFinishTool, browserRandomRoughTool]; const browserRandomTextPaths = await saveMachineTextFiles(browserRandomMachineId, { ini: [ "[EMC]", @@ -9477,21 +9518,10 @@ verifyOpfsLoadResult( "opfs_load_random_tool_table", loadedRandomSession.toolTable, - [ - "tooldata_random_toolchanger=1", - "tooldata_load=0", - "tool_pocket_7.toolno=2", - "tool_pocket_7.pocketno=7", - "tool_pocket_7.z=3.125", - "tool_pocket_7.diameter=1.5", - "tool_pocket_7.frontangle=12", - "tool_pocket_7.backangle=34", - "tool_pocket_7.orientation=4", - "tool_pocket_7.comment=browser random finish tool", - "tool_pocket_9.toolno=5", - "tool_pocket_9.pocketno=9", - "tool_index_for_tool_2=7", - ], + opfsRandomToolTableResultLines("load", [ + ...browserRandomTools, + { resultLines: ["tool_index_for_tool_2=7"] }, + ]), ); const savedRandomToolTable = await saveMachineToolTableToOpfs( interp, @@ -9508,24 +9538,16 @@ verifyOpfsSaveResult( "opfs_save_random_tool_table", savedRandomToolTable, - [ - "tooldata_save=0", - "tool_pocket_7.toolno=2", - "tool_pocket_9.toolno=5", - ], + opfsRandomToolTableResultLines("save", [ + { resultLines: ["tool_pocket_7.toolno=2"] }, + { resultLines: ["tool_pocket_9.toolno=5"] }, + ]), ); await verifyOpfsMachineFileReadback( "opfs_saved_random_tool_table_text", browserRandomMachineId, "toolTable", - [ - "T2", - "P7", - ";browser random finish tool", - "T5", - "P9", - ";browser random rough tool", - ], + opfsRandomToolTableTextLines(browserRandomTools), ); const iniFileMachineId = "browser-ini-file-session";