Guard browser direct parameter object adapters
This commit is contained in:
61
text9.txt
61
text9.txt
@@ -842,3 +842,64 @@ host_wasm_opfs_browser_smokes=ok
|
|||||||
是否还能合并命名或减少重复 adapter;如果收益不明显,转向 parameter result/text 的
|
是否还能合并命名或减少重复 adapter;如果收益不明显,转向 parameter result/text 的
|
||||||
object adapter 收敛;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或
|
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 字符串或保存/读取行为。
|
||||||
|
|||||||
@@ -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) {
|
function opfsParameterTextLines(separator, parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
return [
|
return [
|
||||||
`5161${separator}${parameter5161}`,
|
`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) {
|
function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
return [
|
return [
|
||||||
`5161 ${parameter5161}`,
|
`5161 ${parameter5161}`,
|
||||||
@@ -4589,6 +4609,15 @@
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function opfsParameterValueSet(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
|
return {
|
||||||
|
parameter5161,
|
||||||
|
parameter5162,
|
||||||
|
parameter5221,
|
||||||
|
parameter5399,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
|
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
return {
|
return {
|
||||||
5161: parameter5161,
|
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 = []) {
|
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
|
||||||
return [
|
return [
|
||||||
`tooldata_${operation}=0`,
|
`tooldata_${operation}=0`,
|
||||||
@@ -9421,7 +9459,7 @@
|
|||||||
|
|
||||||
const browserInterpMachineId = "browser-interp";
|
const browserInterpMachineId = "browser-interp";
|
||||||
const browserInterpWasmPaths = opfsBrowserSessionWasmPaths("browser");
|
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, {
|
const browserInterpTextPaths = await saveMachineTextFiles(browserInterpMachineId, {
|
||||||
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
|
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
|
||||||
toolTable: "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n",
|
toolTable: "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n",
|
||||||
@@ -9448,7 +9486,7 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_restore_parameters",
|
"opfs_restore_parameters",
|
||||||
loadedSession.parameters,
|
loadedSession.parameters,
|
||||||
opfsParameterResultLines("restore", ...browserInterpInitialParameterValues),
|
opfsParameterResultLinesForValues("restore", browserInterpInitialParameterValues),
|
||||||
);
|
);
|
||||||
const browserInterpToolTable = opfsToolTableToolValues(
|
const browserInterpToolTable = opfsToolTableToolValues(
|
||||||
"2",
|
"2",
|
||||||
@@ -9473,13 +9511,18 @@
|
|||||||
"tool_index_for_tool_2=1",
|
"tool_index_for_tool_2=1",
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
const browserInterpParameterValues = [12.34, 56.78, 9.87, 66.6];
|
const browserInterpParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6);
|
||||||
const browserInterpParameterExpectedValues = ["12.34", "56.78", "9.87", "66.6"];
|
const browserInterpParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6");
|
||||||
const browserInterpParameterReadbackValues = ["12.340000", "56.780000", "9.870000", "66.600000"];
|
const browserInterpParameterReadbackValues = opfsParameterValueSet(
|
||||||
|
"12.340000",
|
||||||
|
"56.780000",
|
||||||
|
"9.870000",
|
||||||
|
"66.600000",
|
||||||
|
);
|
||||||
const savedParameters = await saveMachineParametersToOpfs(
|
const savedParameters = await saveMachineParametersToOpfs(
|
||||||
interp,
|
interp,
|
||||||
browserInterpMachineId,
|
browserInterpMachineId,
|
||||||
opfsParameterValues(...browserInterpParameterValues),
|
opfsParameterValuesForValueSet(browserInterpParameterValues),
|
||||||
{ wasmPath: browserInterpWasmPaths.parameters },
|
{ wasmPath: browserInterpWasmPaths.parameters },
|
||||||
);
|
);
|
||||||
assertOpfsSavedParameterStaging(
|
assertOpfsSavedParameterStaging(
|
||||||
@@ -9492,14 +9535,14 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_parameters",
|
"opfs_save_parameters",
|
||||||
savedParameters,
|
savedParameters,
|
||||||
opfsParameterResultLines("save", ...browserInterpParameterExpectedValues),
|
opfsParameterResultLinesForValues("save", browserInterpParameterExpectedValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsMachineFileReadback(
|
await verifyOpfsMachineFileReadback(
|
||||||
"opfs_saved_parameter_text",
|
"opfs_saved_parameter_text",
|
||||||
browserInterpMachineId,
|
browserInterpMachineId,
|
||||||
"parameters",
|
"parameters",
|
||||||
[
|
[
|
||||||
...opfsParameterTextLines("\t", ...browserInterpParameterReadbackValues),
|
...opfsParameterTextLinesForValues("\t", browserInterpParameterReadbackValues),
|
||||||
"absent=<_named_param>",
|
"absent=<_named_param>",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -9507,7 +9550,7 @@
|
|||||||
"opfs_saved_parameter_backup_text",
|
"opfs_saved_parameter_backup_text",
|
||||||
savedParameters.backupOpfsPath,
|
savedParameters.backupOpfsPath,
|
||||||
[
|
[
|
||||||
...opfsParameterTextLines(" ", ...browserInterpInitialParameterValues),
|
...opfsParameterTextLinesForValues(" ", browserInterpInitialParameterValues),
|
||||||
"<_named_param> 123",
|
"<_named_param> 123",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user