diff --git a/text8.txt b/text8.txt index 02248b4..19e248c 100644 --- a/text8.txt +++ b/text8.txt @@ -275,3 +275,53 @@ host_wasm_opfs_browser_smokes=ok verification helper。优先只收敛 `wasm-port/tests/browser/interp_smoke.html` 中 `saveMachineParametersToOpfs(...)` / `saveMachineToolTableToOpfs(...)` 的 result 校验胶水,不改变 expected text,不触碰 runtime bridge 与 LinuxCNC 语义。 + +八、2026-06-14 继续执行记录:browser OPFS save result helper guard + +本轮按上一条下一步建议继续推进 OPFS save result verification 小批收敛,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。 + +完成内容: + +- 新增 `verifyOpfsSaveResult(...)`,统一 OPFS save helper result 的 + `verifyExpectedOutput(...)` 精确校验入口; +- 收敛 `saveMachineParametersToOpfs(...)` / `saveMachineToolTableToOpfs(...)` + 后续 7 个 result 校验调用; +- expected output 行内容未改,只把 `.result` 读取和 `join("\n")` 胶水放入 helper; +- 未改变 OPFS bridge behavior、file-service、path-model、SDK planner、interpreter、 + INI、tool、parameter 或 LinuxCNC-owned runtime semantics。 + +验证已通过: + +```bash +git diff --check +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 +SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh +wasm-port/tests/host/verify_host_smokes.sh +``` + +关键输出: + +```text +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 +browser_interp_smoke=ok +host_wasm_opfs_browser_smokes=ok +``` + +下一步建议: + +继续沿 browser/OPFS boundary guard 方向小批量推进。优先扫描 +`wasm-port/tests/browser/interp_smoke.html` 里 OPFS load result 的重复 +`verifyExpectedOutput(...)` 调用,若 `loadedSession.parameters.result` / +`loadedSession.toolTable.result` 等形态足够一致,可抽一个只处理 result 精确校验的 +helper。仍不改变 expected text,不触碰 runtime bridge、file-service 或 LinuxCNC +语义。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index 54ea5ac..8fa77a2 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4535,6 +4535,10 @@ ); } + function verifyOpfsSaveResult(label, saveResult, expectedLines) { + verifyExpectedOutput(label, saveResult.result, expectedLines.join("\n")); + } + async function verifyOpfsSavedText(label, loadActualText, expectedText) { verifyExpectedOutput(label, await loadActualText(), expectedText); } @@ -9237,16 +9241,16 @@ "linuxcnc.var", browserInterpParameterWasmPath, ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_parameters", - savedParameters.result, + savedParameters, [ "save_parameters=0", "parameter_5161=12.34", "parameter_5162=56.78", "parameter_5221=9.87", "parameter_5399=66.6", - ].join("\n"), + ], ); await verifyOpfsMachineFileReadback( "opfs_saved_parameter_text", @@ -9283,14 +9287,14 @@ "tool.tbl", browserInterpToolTableWasmPath, ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_tool_table", - savedToolTable.result, + savedToolTable, [ "tooldata_save=0", "tool_1.toolno=2", "tool_1.pocketno=7", - ].join("\n"), + ], ); await verifyOpfsMachineFileReadback( "opfs_saved_tool_table_text", @@ -9393,14 +9397,14 @@ "tool.tbl", browserRandomToolTableWasmPath, ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_random_tool_table", - savedRandomToolTable.result, + savedRandomToolTable, [ "tooldata_save=0", "tool_pocket_7.toolno=2", "tool_pocket_9.toolno=5", - ].join("\n"), + ], ); await verifyOpfsMachineFileReadback( "opfs_saved_random_tool_table_text", @@ -9509,16 +9513,16 @@ iniFileParameterFilename, opfsCustomSessionWasmPath(iniFileParameterFilename), ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_ini_named_parameter_file", - savedIniNamedParameters.result, + savedIniNamedParameters, [ "save_parameters=0", "parameter_5161=33.75", "parameter_5162=67.5", "parameter_5221=5.25", "parameter_5399=199", - ].join("\n"), + ], ); await verifyOpfsReadback( "opfs_saved_ini_named_parameter_text", @@ -9567,14 +9571,14 @@ iniFileToolTableFilename, opfsCustomSessionWasmPath(iniFileToolTableFilename), ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_ini_named_tool_table", - savedIniNamedToolTable.result, + savedIniNamedToolTable, [ "tooldata_save=0", "tool_1.toolno=8", "tool_1.pocketno=8", - ].join("\n"), + ], ); await verifyOpfsSavedText( "opfs_saved_ini_named_tool_table_text", @@ -9695,16 +9699,16 @@ explicitParameterFilename, opfsCustomSessionWasmPath(explicitParameterFilename), ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_explicit_parameter_file", - savedExplicitParameters.result, + savedExplicitParameters, [ "save_parameters=0", "parameter_5161=51.25", "parameter_5162=102.5", "parameter_5221=7.5", "parameter_5399=202", - ].join("\n"), + ], ); await verifyOpfsSavedText( "opfs_saved_explicit_parameter_text", @@ -9741,14 +9745,14 @@ explicitToolTableFilename, opfsCustomSessionWasmPath(explicitToolTableFilename), ); - verifyExpectedOutput( + verifyOpfsSaveResult( "opfs_save_explicit_tool_table", - savedExplicitToolTable.result, + savedExplicitToolTable, [ "tooldata_save=0", "tool_1.toolno=9", "tool_1.pocketno=9", - ].join("\n"), + ], ); await verifyOpfsSavedText( "opfs_saved_explicit_tool_table_text",