diff --git a/text9.txt b/text9.txt index 3636f9a..a3591cc 100644 --- a/text9.txt +++ b/text9.txt @@ -1083,3 +1083,66 @@ host_wasm_opfs_browser_smokes=ok 继续小批量 browser test glue guard。优先扫描 direct/generated parameter fixture helpers 是否也能复用 `opfsParameterValueSet(...)` 或 seed/text adapter;只改测试胶水, 不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 + +二十二、2026-06-14 继续执行记录:browser direct generated parameter fixture adapter guard + +本轮按上一条下一步建议继续收敛 direct generated parameter fixture helper 的 +expected lines 与 seed lines,范围仍只触及 +`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。 + +完成内容: + +- 新增 `opfsParameterSeedLines(...)`,为 parameter seed text helper 提供结构化 + seed line 列表; +- 新增 `opfsParameterSeedLinesForValues(...)`,从显式 parameter value set 转发到 + `opfsParameterSeedLines(...)`; +- `opfsParameterSeedText(...)` 与 `opfsParameterSeedTextForValues(...)` 改为复用 + seed line helper; +- direct generated `browser-direct.var` seed input 改为复用 + `opfsParameterSeedLinesForValues(...)`,并继续显式保留 `<_named_param> 123`; +- `restore_parameters_direct`、`save_parameters_direct`、 + `saved_parameters_direct_text` 与 `saved_parameters_direct_backup` expected lines + 改为复用 parameter object adapter; +- `absent=<_named_param>` 与 `<_named_param> 123` 仍保留在对应调用点,保持语义边界外显; +- 未改变任何 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 +``` + +备注: + +- 当前 sandbox 会拦截本地 HTTP server socket bind;browser smoke 与 + `verify_host_smokes.sh` 的 browser 阶段需授权运行; +- 本轮 browser smoke 与 host smoke 均已授权运行并通过。 + +下一步建议: + +继续小批量 browser test glue guard。优先扫描 out-of-order 与 missing-required +generated parameter fixtures 是否能复用小型 local constants 或 existing parameter +helpers;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。 diff --git a/wasm-port/tests/browser/interp_smoke.html b/wasm-port/tests/browser/interp_smoke.html index d3ce451..cfb0976 100644 --- a/wasm-port/tests/browser/interp_smoke.html +++ b/wasm-port/tests/browser/interp_smoke.html @@ -4586,19 +4586,25 @@ ); } - function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) { + function opfsParameterSeedLines(parameter5161, parameter5162, parameter5221, parameter5399) { return [ `5161 ${parameter5161}`, `5162 ${parameter5162}`, "5220 1", `5221 ${parameter5221}`, `5399 ${parameter5399}`, + ]; + } + + function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) { + return [ + ...opfsParameterSeedLines(parameter5161, parameter5162, parameter5221, parameter5399), "", ].join("\n"); } - function opfsParameterSeedTextForValues(values) { - return opfsParameterSeedText( + function opfsParameterSeedLinesForValues(values) { + return opfsParameterSeedLines( values.parameter5161, values.parameter5162, values.parameter5221, @@ -4606,6 +4612,13 @@ ); } + function opfsParameterSeedTextForValues(values) { + return [ + ...opfsParameterSeedLinesForValues(values), + "", + ].join("\n"); + } + function browserDirectParameterSeedLines(includeNamedParam = false) { return [ "5161 10.5", @@ -9284,51 +9297,40 @@ interp, "/work/browser-direct.var", [ - "5161 10.5", - "5162 20.25", - "5220 1", - "5221 2.25", - "5399 44", + ...opfsParameterSeedLinesForValues( + opfsParameterValueSet("10.5", "20.25", "2.25", "44"), + ), "<_named_param> 123", "", ].join("\n"), ); + const browserDirectInitialParameterValues = opfsParameterValueSet("10.5", "20.25", "2.25", "44"); verifyExpectedOutput( "restore_parameters_direct", interp.restoreParameters(browserParameterFilePath), - [ - "restore_parameters=0", - "parameter_5161=10.5", - "parameter_5162=20.25", - "parameter_5221=2.25", - "parameter_5399=44", - ].join("\n"), + opfsParameterResultLinesForValues("restore", browserDirectInitialParameterValues).join("\n"), + ); + const browserDirectParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6); + const browserDirectParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6"); + const browserDirectParameterReadbackValues = opfsParameterValueSet( + "12.340000", + "56.780000", + "9.870000", + "66.600000", ); verifyExpectedOutput( "save_parameters_direct", - interp.saveParameters(browserParameterFilePath, { - 5161: 12.34, - 5162: 56.78, - 5220: 1.0, - 5221: 9.87, - 5399: 66.6, - }), - [ - "save_parameters=0", - "parameter_5161=12.34", - "parameter_5162=56.78", - "parameter_5221=9.87", - "parameter_5399=66.6", - ].join("\n"), + interp.saveParameters( + browserParameterFilePath, + opfsParameterValuesForValueSet(browserDirectParameterValues), + ), + opfsParameterResultLinesForValues("save", browserDirectParameterExpectedValues).join("\n"), ); verifyExpectedOutput( "saved_parameters_direct_text", interp.readTextFile(browserParameterFilePath), [ - "5161\t12.340000", - "5162\t56.780000", - "5221\t9.870000", - "5399\t66.600000", + ...opfsParameterTextLinesForValues("\t", browserDirectParameterReadbackValues), "absent=<_named_param>", ].join("\n"), ); @@ -9336,10 +9338,7 @@ "saved_parameters_direct_backup", interp.readTextFile(`${browserParameterFilePath}.bak`), [ - "5161 10.5", - "5162 20.25", - "5221 2.25", - "5399 44", + ...opfsParameterTextLinesForValues(" ", browserDirectInitialParameterValues), "<_named_param> 123", ].join("\n"), );