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、
|
value groups,看是否能像 direct session 一样用 tool object locals 表达 load、
|
||||||
save、readback 三组 expected lines;只改测试胶水,不改变输入、OPFS path、WASM path
|
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) {
|
function toolTableResultLines(tools) {
|
||||||
return tools.flatMap((tool) => tool.resultLines);
|
return tools.flatMap((tool) => tool.resultLines);
|
||||||
}
|
}
|
||||||
@@ -9610,13 +9632,26 @@
|
|||||||
iniFileParameterFilename,
|
iniFileParameterFilename,
|
||||||
opfsParameterSeedText(...iniNamedInitialParameterValues),
|
opfsParameterSeedText(...iniNamedInitialParameterValues),
|
||||||
);
|
);
|
||||||
const iniNamedToolTableValues = ["8", "8", "4.5", "0.5", ";browser custom tool"];
|
const iniNamedToolTable = opfsToolTableToolValues(
|
||||||
const iniNamedToolTableLoadValues = ["8", "8", "4.5", "0.5", "browser custom tool"];
|
"8",
|
||||||
const iniNamedToolTableReadbackValues = ["8", "8", "+4.500000", "+0.500000", ";browser custom tool"];
|
"8",
|
||||||
|
"4.5",
|
||||||
|
"0.5",
|
||||||
|
";browser custom tool",
|
||||||
|
"browser custom tool",
|
||||||
|
"+4.500000",
|
||||||
|
"+0.500000",
|
||||||
|
);
|
||||||
await writeOpfsMachineFile(
|
await writeOpfsMachineFile(
|
||||||
iniFileMachineId,
|
iniFileMachineId,
|
||||||
iniFileToolTableFilename,
|
iniFileToolTableFilename,
|
||||||
opfsToolTableSeedText(...iniNamedToolTableValues),
|
opfsToolTableSeedText(
|
||||||
|
iniNamedToolTable.toolNo,
|
||||||
|
iniNamedToolTable.pocketNo,
|
||||||
|
iniNamedToolTable.zOffset,
|
||||||
|
iniNamedToolTable.diameter,
|
||||||
|
iniNamedToolTable.comment,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
||||||
interp,
|
interp,
|
||||||
@@ -9680,10 +9715,10 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_ini_named_tool_table",
|
"opfs_load_ini_named_tool_table",
|
||||||
loadedIniFileSession.toolTable,
|
loadedIniFileSession.toolTable,
|
||||||
opfsToolTableResultLines("load", iniNamedToolTableLoadValues[0], iniNamedToolTableLoadValues[1], [
|
opfsToolTableResultLines("load", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo, [
|
||||||
`tool_1.z=${iniNamedToolTableLoadValues[2]}`,
|
`tool_1.z=${iniNamedToolTable.zOffset}`,
|
||||||
`tool_1.diameter=${iniNamedToolTableLoadValues[3]}`,
|
`tool_1.diameter=${iniNamedToolTable.diameter}`,
|
||||||
`tool_1.comment=${iniNamedToolTableLoadValues[4]}`,
|
`tool_1.comment=${iniNamedToolTable.loadComment}`,
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
const savedIniNamedToolTable = await saveMachineToolTableToOpfs(
|
const savedIniNamedToolTable = await saveMachineToolTableToOpfs(
|
||||||
@@ -9701,12 +9736,18 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_ini_named_tool_table",
|
"opfs_save_ini_named_tool_table",
|
||||||
savedIniNamedToolTable,
|
savedIniNamedToolTable,
|
||||||
opfsToolTableResultLines("save", iniNamedToolTableValues[0], iniNamedToolTableValues[1]),
|
opfsToolTableResultLines("save", iniNamedToolTable.toolNo, iniNamedToolTable.pocketNo),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_ini_named_tool_table_text",
|
"opfs_saved_ini_named_tool_table_text",
|
||||||
loadedIniFileSession.toolTable.opfsPath,
|
loadedIniFileSession.toolTable.opfsPath,
|
||||||
opfsToolTableTextLines(...iniNamedToolTableReadbackValues),
|
opfsToolTableTextLines(
|
||||||
|
iniNamedToolTable.toolNo,
|
||||||
|
iniNamedToolTable.pocketNo,
|
||||||
|
iniNamedToolTable.readbackZOffset,
|
||||||
|
iniNamedToolTable.readbackDiameter,
|
||||||
|
iniNamedToolTable.comment,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const iniOverrideMachineId = "browser-ini-override-session";
|
const iniOverrideMachineId = "browser-ini-override-session";
|
||||||
@@ -9734,13 +9775,26 @@
|
|||||||
explicitParameterFilename,
|
explicitParameterFilename,
|
||||||
opfsParameterSeedText(...explicitInitialParameterValues),
|
opfsParameterSeedText(...explicitInitialParameterValues),
|
||||||
);
|
);
|
||||||
const explicitToolTableValues = ["9", "9", "5.5", "0.625", ";browser explicit tool"];
|
const explicitToolTable = opfsToolTableToolValues(
|
||||||
const explicitToolTableLoadValues = ["9", "9", "5.5", "0.625", "browser explicit tool"];
|
"9",
|
||||||
const explicitToolTableReadbackValues = ["9", "9", "+5.500000", "+0.625000", ";browser explicit tool"];
|
"9",
|
||||||
|
"5.5",
|
||||||
|
"0.625",
|
||||||
|
";browser explicit tool",
|
||||||
|
"browser explicit tool",
|
||||||
|
"+5.500000",
|
||||||
|
"+0.625000",
|
||||||
|
);
|
||||||
await writeOpfsMachineFile(
|
await writeOpfsMachineFile(
|
||||||
iniOverrideMachineId,
|
iniOverrideMachineId,
|
||||||
explicitToolTableFilename,
|
explicitToolTableFilename,
|
||||||
opfsToolTableSeedText(...explicitToolTableValues),
|
opfsToolTableSeedText(
|
||||||
|
explicitToolTable.toolNo,
|
||||||
|
explicitToolTable.pocketNo,
|
||||||
|
explicitToolTable.zOffset,
|
||||||
|
explicitToolTable.diameter,
|
||||||
|
explicitToolTable.comment,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
||||||
interp,
|
interp,
|
||||||
@@ -9777,10 +9831,10 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_explicit_tool_table",
|
"opfs_load_explicit_tool_table",
|
||||||
loadedIniOverrideSession.toolTable,
|
loadedIniOverrideSession.toolTable,
|
||||||
opfsToolTableResultLines("load", explicitToolTableLoadValues[0], explicitToolTableLoadValues[1], [
|
opfsToolTableResultLines("load", explicitToolTable.toolNo, explicitToolTable.pocketNo, [
|
||||||
`tool_1.z=${explicitToolTableLoadValues[2]}`,
|
`tool_1.z=${explicitToolTable.zOffset}`,
|
||||||
`tool_1.diameter=${explicitToolTableLoadValues[3]}`,
|
`tool_1.diameter=${explicitToolTable.diameter}`,
|
||||||
`tool_1.comment=${explicitToolTableLoadValues[4]}`,
|
`tool_1.comment=${explicitToolTable.loadComment}`,
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
const explicitParameterValues = [51.25, 102.5, 7.5, 202];
|
const explicitParameterValues = [51.25, 102.5, 7.5, 202];
|
||||||
@@ -9829,12 +9883,18 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_explicit_tool_table",
|
"opfs_save_explicit_tool_table",
|
||||||
savedExplicitToolTable,
|
savedExplicitToolTable,
|
||||||
opfsToolTableResultLines("save", explicitToolTableValues[0], explicitToolTableValues[1]),
|
opfsToolTableResultLines("save", explicitToolTable.toolNo, explicitToolTable.pocketNo),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_explicit_tool_table_text",
|
"opfs_saved_explicit_tool_table_text",
|
||||||
loadedIniOverrideSession.toolTable.opfsPath,
|
loadedIniOverrideSession.toolTable.opfsPath,
|
||||||
opfsToolTableTextLines(...explicitToolTableReadbackValues),
|
opfsToolTableTextLines(
|
||||||
|
explicitToolTable.toolNo,
|
||||||
|
explicitToolTable.pocketNo,
|
||||||
|
explicitToolTable.readbackZOffset,
|
||||||
|
explicitToolTable.readbackDiameter,
|
||||||
|
explicitToolTable.comment,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
await verifyOpfsInvalidIniSessionRejects(
|
await verifyOpfsInvalidIniSessionRejects(
|
||||||
|
|||||||
Reference in New Issue
Block a user