Guard browser custom session tool-table values
This commit is contained in:
52
text9.txt
52
text9.txt
@@ -624,3 +624,55 @@ host_wasm_opfs_browser_smokes=ok
|
||||
value groups,看是否能像 direct session 一样用 tool object locals 表达 load、
|
||||
save、readback 三组 expected lines;只改测试胶水,不改变输入、OPFS path、WASM path
|
||||
字符串或保存/读取行为。
|
||||
|
||||
十四、2026-06-14 继续执行记录:browser custom session tool-table value object guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 custom session 普通 tool-table load/save/readback
|
||||
value groups,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `opfsToolTableToolValues(...)`,用显式 object locals 承载普通 OPFS
|
||||
tool-table 的 seed、load result 与 readback expected 值;
|
||||
- `iniNamedToolTable*` 三组并行数组收敛为 `iniNamedToolTable` object;
|
||||
- `explicitToolTable*` 三组并行数组收敛为 `explicitToolTable` object;
|
||||
- `loadComment`、`readbackZOffset` 与 `readbackDiameter` 继续显式传入,避免在
|
||||
browser test glue 中推导 LinuxCNC-owned tool-table 格式;
|
||||
- 未改变任何 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
|
||||
```
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 direct `browser-interp` ordinary
|
||||
tool-table value groups 是否也能复用 `opfsToolTableToolValues(...)`,或把
|
||||
`opfsToolTableSeedText(...)` / `opfsToolTableTextLines(...)` 调用收敛成 object
|
||||
adapter;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
@@ -4619,6 +4619,28 @@
|
||||
];
|
||||
}
|
||||
|
||||
function opfsToolTableToolValues(
|
||||
toolNo,
|
||||
pocketNo,
|
||||
zOffset,
|
||||
diameter,
|
||||
comment,
|
||||
loadComment,
|
||||
readbackZOffset,
|
||||
readbackDiameter,
|
||||
) {
|
||||
return {
|
||||
toolNo,
|
||||
pocketNo,
|
||||
zOffset,
|
||||
diameter,
|
||||
comment,
|
||||
loadComment,
|
||||
readbackZOffset,
|
||||
readbackDiameter,
|
||||
};
|
||||
}
|
||||
|
||||
function toolTableResultLines(tools) {
|
||||
return tools.flatMap((tool) => tool.resultLines);
|
||||
}
|
||||
@@ -9610,13 +9632,26 @@
|
||||
iniFileParameterFilename,
|
||||
opfsParameterSeedText(...iniNamedInitialParameterValues),
|
||||
);
|
||||
const iniNamedToolTableValues = ["8", "8", "4.5", "0.5", ";browser custom tool"];
|
||||
const iniNamedToolTableLoadValues = ["8", "8", "4.5", "0.5", "browser custom tool"];
|
||||
const iniNamedToolTableReadbackValues = ["8", "8", "+4.500000", "+0.500000", ";browser custom tool"];
|
||||
const iniNamedToolTable = opfsToolTableToolValues(
|
||||
"8",
|
||||
"8",
|
||||
"4.5",
|
||||
"0.5",
|
||||
";browser custom tool",
|
||||
"browser custom tool",
|
||||
"+4.500000",
|
||||
"+0.500000",
|
||||
);
|
||||
await writeOpfsMachineFile(
|
||||
iniFileMachineId,
|
||||
iniFileToolTableFilename,
|
||||
opfsToolTableSeedText(...iniNamedToolTableValues),
|
||||
opfsToolTableSeedText(
|
||||
iniNamedToolTable.toolNo,
|
||||
iniNamedToolTable.pocketNo,
|
||||
iniNamedToolTable.zOffset,
|
||||
iniNamedToolTable.diameter,
|
||||
iniNamedToolTable.comment,
|
||||
),
|
||||
);
|
||||
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
||||
interp,
|
||||
@@ -9680,10 +9715,10 @@
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_load_ini_named_tool_table",
|
||||
loadedIniFileSession.toolTable,
|
||||
opfsToolTableResultLines("load", iniNamedToolTableLoadValues[0], iniNamedToolTableLoadValues[1], [
|
||||
`tool_1.z=${iniNamedToolTableLoadValues[2]}`,
|
||||
`tool_1.diameter=${iniNamedToolTableLoadValues[3]}`,
|
||||
`tool_1.comment=${iniNamedToolTableLoadValues[4]}`,
|
||||
opfsToolTableResultLines("load", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo, [
|
||||
`tool_1.z=${iniNamedToolTable.zOffset}`,
|
||||
`tool_1.diameter=${iniNamedToolTable.diameter}`,
|
||||
`tool_1.comment=${iniNamedToolTable.loadComment}`,
|
||||
]),
|
||||
);
|
||||
const savedIniNamedToolTable = await saveMachineToolTableToOpfs(
|
||||
@@ -9701,12 +9736,18 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_ini_named_tool_table",
|
||||
savedIniNamedToolTable,
|
||||
opfsToolTableResultLines("save", iniNamedToolTableValues[0], iniNamedToolTableValues[1]),
|
||||
opfsToolTableResultLines("save", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_ini_named_tool_table_text",
|
||||
loadedIniFileSession.toolTable.opfsPath,
|
||||
opfsToolTableTextLines(...iniNamedToolTableReadbackValues),
|
||||
opfsToolTableTextLines(
|
||||
iniNamedToolTable.toolNo,
|
||||
iniNamedToolTable.pocketNo,
|
||||
iniNamedToolTable.readbackZOffset,
|
||||
iniNamedToolTable.readbackDiameter,
|
||||
iniNamedToolTable.comment,
|
||||
),
|
||||
);
|
||||
|
||||
const iniOverrideMachineId = "browser-ini-override-session";
|
||||
@@ -9734,13 +9775,26 @@
|
||||
explicitParameterFilename,
|
||||
opfsParameterSeedText(...explicitInitialParameterValues),
|
||||
);
|
||||
const explicitToolTableValues = ["9", "9", "5.5", "0.625", ";browser explicit tool"];
|
||||
const explicitToolTableLoadValues = ["9", "9", "5.5", "0.625", "browser explicit tool"];
|
||||
const explicitToolTableReadbackValues = ["9", "9", "+5.500000", "+0.625000", ";browser explicit tool"];
|
||||
const explicitToolTable = opfsToolTableToolValues(
|
||||
"9",
|
||||
"9",
|
||||
"5.5",
|
||||
"0.625",
|
||||
";browser explicit tool",
|
||||
"browser explicit tool",
|
||||
"+5.500000",
|
||||
"+0.625000",
|
||||
);
|
||||
await writeOpfsMachineFile(
|
||||
iniOverrideMachineId,
|
||||
explicitToolTableFilename,
|
||||
opfsToolTableSeedText(...explicitToolTableValues),
|
||||
opfsToolTableSeedText(
|
||||
explicitToolTable.toolNo,
|
||||
explicitToolTable.pocketNo,
|
||||
explicitToolTable.zOffset,
|
||||
explicitToolTable.diameter,
|
||||
explicitToolTable.comment,
|
||||
),
|
||||
);
|
||||
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
||||
interp,
|
||||
@@ -9777,10 +9831,10 @@
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_load_explicit_tool_table",
|
||||
loadedIniOverrideSession.toolTable,
|
||||
opfsToolTableResultLines("load", explicitToolTableLoadValues[0], explicitToolTableLoadValues[1], [
|
||||
`tool_1.z=${explicitToolTableLoadValues[2]}`,
|
||||
`tool_1.diameter=${explicitToolTableLoadValues[3]}`,
|
||||
`tool_1.comment=${explicitToolTableLoadValues[4]}`,
|
||||
opfsToolTableResultLines("load", explicitToolTable.toolNo, explicitToolTable.pocketNo, [
|
||||
`tool_1.z=${explicitToolTable.zOffset}`,
|
||||
`tool_1.diameter=${explicitToolTable.diameter}`,
|
||||
`tool_1.comment=${explicitToolTable.loadComment}`,
|
||||
]),
|
||||
);
|
||||
const explicitParameterValues = [51.25, 102.5, 7.5, 202];
|
||||
@@ -9829,12 +9883,18 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_explicit_tool_table",
|
||||
savedExplicitToolTable,
|
||||
opfsToolTableResultLines("save", explicitToolTableValues[0], explicitToolTableValues[1]),
|
||||
opfsToolTableResultLines("save", explicitToolTable.toolNo, explicitToolTable.pocketNo),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_explicit_tool_table_text",
|
||||
loadedIniOverrideSession.toolTable.opfsPath,
|
||||
opfsToolTableTextLines(...explicitToolTableReadbackValues),
|
||||
opfsToolTableTextLines(
|
||||
explicitToolTable.toolNo,
|
||||
explicitToolTable.pocketNo,
|
||||
explicitToolTable.readbackZOffset,
|
||||
explicitToolTable.readbackDiameter,
|
||||
explicitToolTable.comment,
|
||||
),
|
||||
);
|
||||
|
||||
await verifyOpfsInvalidIniSessionRejects(
|
||||
|
||||
Reference in New Issue
Block a user