diff --git a/text9.txt b/text9.txt index e4ff9ec..e2dd0a8 100644 --- a/text9.txt +++ b/text9.txt @@ -465,3 +465,60 @@ host_wasm_opfs_browser_smokes=ok tool-table file block 中的 load/save/readback expected lines 是否能复用现有 `opfsToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated file input、 WASM path 字符串或保存/读取行为。 + +十一、2026-06-14 继续执行记录:browser direct generated non-random tool-table helper guard + +本轮按上一条下一步建议继续收敛 direct non-random generated toolchanger file block 的 +load/save/readback expected lines,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。 + +完成内容: + +- 新增 `directToolTableResultLines(...)`,统一 direct non-random generated load/save + result expected lines 的拼装; +- 新增 `directToolTableTextLines(...)`,统一 direct non-random generated saved + tool-table readback expected lines 的拼装; +- 为 direct non-random generated file block 增加 `browserDirectFinishTool`、 + `browserDirectRoughTool` 与 `browserDirectTools` 局部常量; +- `load_tool_table_direct` expected lines 改为复用 + `directToolTableResultLines("load", ...)`,并继续显式保留 `tooldata_last_index=2` + 和 `tool_index_for_tool_2=1`; +- `save_tool_table_direct` expected lines 改为复用 + `directToolTableResultLines("save", ...)`; +- `saved_tool_table_direct_text` expected lines 改为复用 + `directToolTableTextLines(...)`; +- 未改变 direct generated file input、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` session 和 +direct generated file block 之间是否还能抽出更小的共享 tool-table helper;只改测试 +胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index b66680b..bde79d7 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4619,6 +4619,23 @@ ]; } + function directToolTableResultLines(operation, tools, extraLines = []) { + return [ + `tooldata_${operation}=0`, + ...extraLines, + ...tools.flatMap((tool) => tool.resultLines), + ]; + } + + function directToolTableTextLines(tools) { + return tools.flatMap((tool) => [ + `T${tool.toolNo}`, + `P${tool.pocketNo}`, + ...(tool.extraTextLines ?? []), + tool.comment, + ]); + } + function opfsRandomToolTableResultLines(operation, tools) { return [ ...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []), @@ -9238,12 +9255,11 @@ "", ].join("\n"), ); - verifyExpectedOutput( - "load_tool_table_direct", - interp.loadToolTable(browserToolTablePath), - [ - "tooldata_load=0", - "tooldata_last_index=2", + const browserDirectFinishTool = { + toolNo: "2", + pocketNo: "7", + comment: ";browser direct finish tool", + resultLines: [ "tool_1.toolno=2", "tool_1.pocketno=7", "tool_1.z=3.125", @@ -9252,37 +9268,46 @@ "tool_1.backangle=34", "tool_1.orientation=4", "tool_1.comment=browser direct finish tool", - "tool_2.toolno=5", - "tool_2.pocketno=9", - "tool_2.comment=browser direct rough tool", - "tool_index_for_tool_2=1", - ].join("\n"), - ); - verifyExpectedOutput( - "save_tool_table_direct", - interp.saveToolTable(browserToolTablePath), - [ - "tooldata_save=0", - "tool_1.toolno=2", - "tool_2.toolno=5", - ].join("\n"), - ); - verifyExpectedOutput( - "saved_tool_table_direct_text", - interp.readTextFile(browserToolTablePath), - [ - "T2", - "P7", + ], + extraTextLines: [ "Z+3.125000", "D+1.500000", "I+12.000000", "J+34.000000", "Q4", - ";browser direct finish tool", - "T5", - "P9", - ";browser direct rough tool", - ].join("\n"), + ], + }; + const browserDirectRoughTool = { + toolNo: "5", + pocketNo: "9", + comment: ";browser direct rough tool", + resultLines: [ + "tool_2.toolno=5", + "tool_2.pocketno=9", + "tool_2.comment=browser direct rough tool", + ], + }; + const browserDirectTools = [browserDirectFinishTool, browserDirectRoughTool]; + verifyExpectedOutput( + "load_tool_table_direct", + interp.loadToolTable(browserToolTablePath), + directToolTableResultLines("load", browserDirectTools, [ + "tooldata_last_index=2", + "tool_index_for_tool_2=1", + ]).join("\n"), + ); + verifyExpectedOutput( + "save_tool_table_direct", + interp.saveToolTable(browserToolTablePath), + directToolTableResultLines("save", [ + { resultLines: ["tool_1.toolno=2"] }, + { resultLines: ["tool_2.toolno=5"] }, + ]).join("\n"), + ); + verifyExpectedOutput( + "saved_tool_table_direct_text", + interp.readTextFile(browserToolTablePath), + directToolTableTextLines(browserDirectTools).join("\n"), ); const browserRandomToolTablePath = writeGeneratedToolTableFixture(