Guard browser direct parameter object adapters

This commit is contained in:
2026-06-14 07:32:22 +08:00
parent 6ac7cc8953
commit c7e7f075f3
2 changed files with 113 additions and 9 deletions

View File

@@ -842,3 +842,64 @@ host_wasm_opfs_browser_smokes=ok
是否还能合并命名或减少重复 adapter如果收益不明显转向 parameter result/text 的
object adapter 收敛只改测试胶水不改变输入、OPFS path、WASM path 字符串或
保存/读取行为。
十八、2026-06-14 继续执行记录browser direct parameter object adapter guard
本轮按上一条下一步建议继续收敛 direct `browser-interp` parameter result/text helper
调用点的参数展开,范围仍只触及
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
完成内容:
- 新增 `opfsParameterResultLinesForValues(...)`,从显式 parameter value set 转发到
`opfsParameterResultLines(...)`
- 新增 `opfsParameterTextLinesForValues(...)`,从显式 parameter value set 转发到
`opfsParameterTextLines(...)`
- 新增 `opfsParameterValueSet(...)` 与 `opfsParameterValuesForValueSet(...)`
让 direct `browser-interp` parameter load/save/readback 只通过 object locals
传递;
- direct `browser-interp` 的 initial restore、save、readback text 和 backup text
调用点改为复用 parameter object adapter
- adapter 只转发已显式保存的 object 字段,不推导 LinuxCNC-owned parameter 格式;
- 未改变任何 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`verify_host_smokes.sh` 首次在
browser smoke 阶段因 `PermissionError: [Errno 1] Operation not permitted` 失败;
- 已按规则授权重跑 `wasm-port/tests/host/verify_host_smokes.sh`,重跑通过。
下一步建议:
继续小批量 browser test glue guard。优先扫描 parameter 的 direct helper 是否还能
合并命名,或者转向更少层级的 `parameter result/text` adapter只改测试胶水不改变
输入、OPFS path、WASM path 字符串或保存/读取行为。

View File

@@ -4557,6 +4557,16 @@
];
}
function opfsParameterResultLinesForValues(operation, values) {
return opfsParameterResultLines(
operation,
values.parameter5161,
values.parameter5162,
values.parameter5221,
values.parameter5399,
);
}
function opfsParameterTextLines(separator, parameter5161, parameter5162, parameter5221, parameter5399) {
return [
`5161${separator}${parameter5161}`,
@@ -4566,6 +4576,16 @@
];
}
function opfsParameterTextLinesForValues(separator, values) {
return opfsParameterTextLines(
separator,
values.parameter5161,
values.parameter5162,
values.parameter5221,
values.parameter5399,
);
}
function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) {
return [
`5161 ${parameter5161}`,
@@ -4589,6 +4609,15 @@
];
}
function opfsParameterValueSet(parameter5161, parameter5162, parameter5221, parameter5399) {
return {
parameter5161,
parameter5162,
parameter5221,
parameter5399,
};
}
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
return {
5161: parameter5161,
@@ -4599,6 +4628,15 @@
};
}
function opfsParameterValuesForValueSet(values) {
return opfsParameterValues(
values.parameter5161,
values.parameter5162,
values.parameter5221,
values.parameter5399,
);
}
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
return [
`tooldata_${operation}=0`,
@@ -9421,7 +9459,7 @@
const browserInterpMachineId = "browser-interp";
const browserInterpWasmPaths = opfsBrowserSessionWasmPaths("browser");
const browserInterpInitialParameterValues = ["10.5", "20.25", "2.25", "44"];
const browserInterpInitialParameterValues = opfsParameterValueSet("10.5", "20.25", "2.25", "44");
const browserInterpTextPaths = await saveMachineTextFiles(browserInterpMachineId, {
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
toolTable: "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n",
@@ -9448,7 +9486,7 @@
verifyOpfsLoadResult(
"opfs_restore_parameters",
loadedSession.parameters,
opfsParameterResultLines("restore", ...browserInterpInitialParameterValues),
opfsParameterResultLinesForValues("restore", browserInterpInitialParameterValues),
);
const browserInterpToolTable = opfsToolTableToolValues(
"2",
@@ -9473,13 +9511,18 @@
"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"];
const browserInterpParameterReadbackValues = ["12.340000", "56.780000", "9.870000", "66.600000"];
const browserInterpParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6);
const browserInterpParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6");
const browserInterpParameterReadbackValues = opfsParameterValueSet(
"12.340000",
"56.780000",
"9.870000",
"66.600000",
);
const savedParameters = await saveMachineParametersToOpfs(
interp,
browserInterpMachineId,
opfsParameterValues(...browserInterpParameterValues),
opfsParameterValuesForValueSet(browserInterpParameterValues),
{ wasmPath: browserInterpWasmPaths.parameters },
);
assertOpfsSavedParameterStaging(
@@ -9492,14 +9535,14 @@
verifyOpfsSaveResult(
"opfs_save_parameters",
savedParameters,
opfsParameterResultLines("save", ...browserInterpParameterExpectedValues),
opfsParameterResultLinesForValues("save", browserInterpParameterExpectedValues),
);
await verifyOpfsMachineFileReadback(
"opfs_saved_parameter_text",
browserInterpMachineId,
"parameters",
[
...opfsParameterTextLines("\t", ...browserInterpParameterReadbackValues),
...opfsParameterTextLinesForValues("\t", browserInterpParameterReadbackValues),
"absent=<_named_param>",
],
);
@@ -9507,7 +9550,7 @@
"opfs_saved_parameter_backup_text",
savedParameters.backupOpfsPath,
[
...opfsParameterTextLines(" ", ...browserInterpInitialParameterValues),
...opfsParameterTextLinesForValues(" ", browserInterpInitialParameterValues),
"<_named_param> 123",
],
);