From 037303245ba4fdc3b207d64d1061ffc0680a1cd6 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sun, 14 Jun 2026 06:39:37 +0800 Subject: [PATCH] Guard browser OPFS direct tool-table values --- text9.txt | 56 +++++++++++++++++++++++ wasm-port/tests/browser/interp_smoke.html | 44 ++++++++---------- 2 files changed, 76 insertions(+), 24 deletions(-) diff --git a/text9.txt b/text9.txt index 1a7b28e..7ec1256 100644 --- a/text9.txt +++ b/text9.txt @@ -295,3 +295,59 @@ host_wasm_opfs_browser_smokes=ok tool-table load/save/readback value groups 是否能像 custom session 一样对齐为 locals 或复用现有 `opfsToolTable*` helpers;只改测试胶水,不改变 tool-table 输入、OPFS path、 WASM path 字符串或保存/读取行为。 + +八、2026-06-14 继续执行记录:browser OPFS direct session tool-table value locals guard + +本轮按上一条下一步建议继续收敛 direct `browser-interp` session 的 tool-table +load/save/readback value groups,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 扩展 `opfsToolTableTextLines(...)`,新增向后兼容的 `extraLines` 可选参数; +- 为 direct `browser-interp` session 增加 `browserInterpToolTableValues` 与 + `browserInterpToolTableReadbackValues` 局部常量; +- `opfs_load_tool_table` expected lines 改为复用既有 + `opfsToolTableResultLines("load", ...)`; +- `opfs_save_tool_table` expected lines 改为复用既有 + `opfsToolTableResultLines("save", ...)`; +- `opfs_saved_tool_table_text` expected lines 改为复用 + `opfsToolTableTextLines(...)`,并通过 `extraLines` 显式保留 direct 场景独有的 + `I+12.000000`、`J+34.000000`、`Q4`; +- custom session 既有 `opfsToolTableTextLines(...)` 调用保持兼容; +- 未改变 tool-table 输入、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 random toolchanger session +的 tool-table load/save/readback expected lines 是否能用现有 helper 或局部常量收敛; +只改测试胶水,不改变 random toolchanger 输入、OPFS path、WASM path 字符串或 +保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 3490e76..d36bf8d 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4608,12 +4608,13 @@ ]; } - function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment) { + function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment, extraLines = []) { return [ `T${toolNo}`, `P${pocketNo}`, `Z${zOffset}`, `D${diameter}`, + ...extraLines, comment, ]; } @@ -9351,21 +9352,26 @@ loadedSession.parameters, opfsParameterResultLines("restore", ...browserInterpInitialParameterValues), ); + const browserInterpToolTableValues = ["2", "7", "3.125", "1.5", "browser finish tool"]; + const browserInterpToolTableReadbackValues = [ + "2", + "7", + "+3.125000", + "+1.500000", + ";browser finish tool", + ]; verifyOpfsLoadResult( "opfs_load_tool_table", loadedSession.toolTable, - [ - "tooldata_load=0", - "tool_1.toolno=2", - "tool_1.pocketno=7", - "tool_1.z=3.125", - "tool_1.diameter=1.5", + opfsToolTableResultLines("load", browserInterpToolTableValues[0], browserInterpToolTableValues[1], [ + `tool_1.z=${browserInterpToolTableValues[2]}`, + `tool_1.diameter=${browserInterpToolTableValues[3]}`, "tool_1.frontangle=12", "tool_1.backangle=34", "tool_1.orientation=4", - "tool_1.comment=browser finish tool", + `tool_1.comment=${browserInterpToolTableValues[4]}`, "tool_index_for_tool_2=1", - ], + ]), ); const browserInterpParameterValues = [12.34, 56.78, 9.87, 66.6]; const browserInterpParameterExpectedValues = ["12.34", "56.78", "9.87", "66.6"]; @@ -9420,26 +9426,16 @@ verifyOpfsSaveResult( "opfs_save_tool_table", savedToolTable, - [ - "tooldata_save=0", - "tool_1.toolno=2", - "tool_1.pocketno=7", - ], + opfsToolTableResultLines("save", browserInterpToolTableValues[0], browserInterpToolTableValues[1]), ); await verifyOpfsMachineFileReadback( "opfs_saved_tool_table_text", browserInterpMachineId, "toolTable", - [ - "T2", - "P7", - "Z+3.125000", - "D+1.500000", - "I+12.000000", - "J+34.000000", - "Q4", - ";browser finish tool", - ], + opfsToolTableTextLines( + ...browserInterpToolTableReadbackValues, + ["I+12.000000", "J+34.000000", "Q4"], + ), ); const browserRandomMachineId = "browser-random-toolchanger";