Guard browser OPFS custom session result lines

This commit is contained in:
2026-06-14 01:51:27 +08:00
parent aaa8105cf3
commit a3e2ff66f9
2 changed files with 84 additions and 48 deletions

View File

@@ -953,3 +953,58 @@ host_wasm_opfs_browser_smokes=ok
custom session load/save blocks 的 expected output arrays 是否还有重复的 custom session load/save blocks 的 expected output arrays 是否还有重复的
parameter/tool-table key lines 可安全抽成局部常量或小 helper只改测试胶水保持 parameter/tool-table key lines 可安全抽成局部常量或小 helper只改测试胶水保持
精确文本校验,不改变 custom filename 输入、OPFS path、WASM path 字符串或保存/读取行为。 精确文本校验,不改变 custom filename 输入、OPFS path、WASM path 字符串或保存/读取行为。
二十二、2026-06-14 继续执行记录browser OPFS custom session result lines helper guard
本轮按上一条下一步建议继续收敛 custom session load/save blocks 的 expected output
arrays范围仍只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test
glue。
完成内容:
- 新增 `opfsParameterResultLines(...)`,统一 custom session parameter
restore/save result 中 5161、5162、5221、5399 的 expected lines
- 新增 `opfsToolTableResultLines(...)`,统一 custom session tool-table
load/save result 中 toolno/pocketno 以及可选附加字段的 expected lines
- INI-named session 与 explicit session 的 parameter load/save 校验改为复用
`opfsParameterResultLines(...)`
- INI-named session 与 explicit session 的 tool-table load/save 校验改为复用
`opfsToolTableResultLines(...)`
- 所有 load/save result 仍通过 `verifyExpectedOutput(...)` 做精确文本校验;
- custom parameter/tool-table filename 输入、OPFS path、WASM path 字符串与
save/read 行为均未改变;
- 未改变 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。优先扫描 custom session saved parameter
readback 与 backup readback expected text 是否还能用只读 expected-lines helper 收敛;
只改测试胶水,保持精确文本校验,不改变 custom filename 输入、OPFS path、WASM path
字符串或保存/读取行为。

View File

@@ -4547,6 +4547,25 @@
verifyExpectedOutput(label, loadResult.result, expectedLines.join("\n")); verifyExpectedOutput(label, loadResult.result, expectedLines.join("\n"));
} }
function opfsParameterResultLines(operation, parameter5161, parameter5162, parameter5221, parameter5399) {
return [
`${operation}_parameters=0`,
`parameter_5161=${parameter5161}`,
`parameter_5162=${parameter5162}`,
`parameter_5221=${parameter5221}`,
`parameter_5399=${parameter5399}`,
];
}
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
return [
`tooldata_${operation}=0`,
`tool_1.toolno=${toolNo}`,
`tool_1.pocketno=${pocketNo}`,
...extraLines,
];
}
async function verifyOpfsSavedText(label, loadActualText, expectedLines) { async function verifyOpfsSavedText(label, loadActualText, expectedLines) {
verifyExpectedOutput(label, await loadActualText(), expectedLines.join("\n")); verifyExpectedOutput(label, await loadActualText(), expectedLines.join("\n"));
} }
@@ -9509,13 +9528,7 @@
verifyOpfsLoadResult( verifyOpfsLoadResult(
"opfs_load_ini_named_parameter_file", "opfs_load_ini_named_parameter_file",
loadedIniFileSession.parameters, loadedIniFileSession.parameters,
[ opfsParameterResultLines("restore", "31.25", "62.5", "4.5", "99"),
"restore_parameters=0",
"parameter_5161=31.25",
"parameter_5162=62.5",
"parameter_5221=4.5",
"parameter_5399=99",
],
); );
const savedIniNamedParameters = await saveMachineParametersToOpfs( const savedIniNamedParameters = await saveMachineParametersToOpfs(
interp, interp,
@@ -9542,13 +9555,7 @@
verifyOpfsSaveResult( verifyOpfsSaveResult(
"opfs_save_ini_named_parameter_file", "opfs_save_ini_named_parameter_file",
savedIniNamedParameters, savedIniNamedParameters,
[ opfsParameterResultLines("save", "33.75", "67.5", "5.25", "199"),
"save_parameters=0",
"parameter_5161=33.75",
"parameter_5162=67.5",
"parameter_5221=5.25",
"parameter_5399=199",
],
); );
await verifyOpfsReadback( await verifyOpfsReadback(
"opfs_saved_ini_named_parameter_text", "opfs_saved_ini_named_parameter_text",
@@ -9573,14 +9580,11 @@
verifyOpfsLoadResult( verifyOpfsLoadResult(
"opfs_load_ini_named_tool_table", "opfs_load_ini_named_tool_table",
loadedIniFileSession.toolTable, loadedIniFileSession.toolTable,
[ opfsToolTableResultLines("load", "8", "8", [
"tooldata_load=0",
"tool_1.toolno=8",
"tool_1.pocketno=8",
"tool_1.z=4.5", "tool_1.z=4.5",
"tool_1.diameter=0.5", "tool_1.diameter=0.5",
"tool_1.comment=browser custom tool", "tool_1.comment=browser custom tool",
], ]),
); );
const savedIniNamedToolTable = await saveMachineToolTableToOpfs( const savedIniNamedToolTable = await saveMachineToolTableToOpfs(
interp, interp,
@@ -9600,11 +9604,7 @@
verifyOpfsSaveResult( verifyOpfsSaveResult(
"opfs_save_ini_named_tool_table", "opfs_save_ini_named_tool_table",
savedIniNamedToolTable, savedIniNamedToolTable,
[ opfsToolTableResultLines("save", "8", "8"),
"tooldata_save=0",
"tool_1.toolno=8",
"tool_1.pocketno=8",
],
); );
await verifyOpfsReadback( await verifyOpfsReadback(
"opfs_saved_ini_named_tool_table_text", "opfs_saved_ini_named_tool_table_text",
@@ -9687,25 +9687,16 @@
verifyOpfsLoadResult( verifyOpfsLoadResult(
"opfs_load_explicit_parameter_file", "opfs_load_explicit_parameter_file",
loadedIniOverrideSession.parameters, loadedIniOverrideSession.parameters,
[ opfsParameterResultLines("restore", "41.25", "82.5", "6.5", "101"),
"restore_parameters=0",
"parameter_5161=41.25",
"parameter_5162=82.5",
"parameter_5221=6.5",
"parameter_5399=101",
],
); );
verifyOpfsLoadResult( verifyOpfsLoadResult(
"opfs_load_explicit_tool_table", "opfs_load_explicit_tool_table",
loadedIniOverrideSession.toolTable, loadedIniOverrideSession.toolTable,
[ opfsToolTableResultLines("load", "9", "9", [
"tooldata_load=0",
"tool_1.toolno=9",
"tool_1.pocketno=9",
"tool_1.z=5.5", "tool_1.z=5.5",
"tool_1.diameter=0.625", "tool_1.diameter=0.625",
"tool_1.comment=browser explicit tool", "tool_1.comment=browser explicit tool",
], ]),
); );
const savedExplicitParameters = await saveMachineParametersToOpfs( const savedExplicitParameters = await saveMachineParametersToOpfs(
interp, interp,
@@ -9732,13 +9723,7 @@
verifyOpfsSaveResult( verifyOpfsSaveResult(
"opfs_save_explicit_parameter_file", "opfs_save_explicit_parameter_file",
savedExplicitParameters, savedExplicitParameters,
[ opfsParameterResultLines("save", "51.25", "102.5", "7.5", "202"),
"save_parameters=0",
"parameter_5161=51.25",
"parameter_5162=102.5",
"parameter_5221=7.5",
"parameter_5399=202",
],
); );
await verifyOpfsReadback( await verifyOpfsReadback(
"opfs_saved_explicit_parameter_text", "opfs_saved_explicit_parameter_text",
@@ -9778,11 +9763,7 @@
verifyOpfsSaveResult( verifyOpfsSaveResult(
"opfs_save_explicit_tool_table", "opfs_save_explicit_tool_table",
savedExplicitToolTable, savedExplicitToolTable,
[ opfsToolTableResultLines("save", "9", "9"),
"tooldata_save=0",
"tool_1.toolno=9",
"tool_1.pocketno=9",
],
); );
await verifyOpfsReadback( await verifyOpfsReadback(
"opfs_saved_explicit_tool_table_text", "opfs_saved_explicit_tool_table_text",