Guard browser OPFS random tool-table values

This commit is contained in:
2026-06-14 06:45:40 +08:00
parent 037303245b
commit 8489ba9c09
2 changed files with 108 additions and 28 deletions

View File

@@ -351,3 +351,61 @@ host_wasm_opfs_browser_smokes=ok
的 tool-table load/save/readback expected lines 是否能用现有 helper 或局部常量收敛;
只改测试胶水,不改变 random toolchanger 输入、OPFS path、WASM path 字符串或
保存/读取行为。
九、2026-06-14 继续执行记录browser OPFS random session tool-table helper guard
本轮按上一条下一步建议继续收敛 direct random toolchanger session 的 tool-table
load/save/readback expected lines范围仍只触及
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
完成内容:
- 新增 `opfsRandomToolTableResultLines(...)`,统一 random toolchanger load/save
result expected lines 的拼装;
- 新增 `opfsRandomToolTableTextLines(...)`,统一 random toolchanger saved
tool-table readback expected lines 的拼装;
- 为 direct random toolchanger session 增加 `browserRandomFinishTool`、
`browserRandomRoughTool` 与 `browserRandomTools` 局部常量;
- `opfs_load_random_tool_table` expected lines 改为复用
`opfsRandomToolTableResultLines("load", ...)`,并继续显式保留
`tooldata_random_toolchanger=1` 和 `tool_index_for_tool_2=7`
- `opfs_save_random_tool_table` expected lines 改为复用
`opfsRandomToolTableResultLines("save", ...)`
- `opfs_saved_random_tool_table_text` expected lines 改为复用
`opfsRandomToolTableTextLines(...)`
- 未改变 random toolchanger 输入、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 OPFS test glue guard。优先扫描 direct generated random
toolchanger file block 中的 load/save/readback expected lines 是否也能复用
`opfsRandomToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated
file input、WASM path 字符串或保存/读取行为。

View File

@@ -4619,6 +4619,22 @@
];
}
function opfsRandomToolTableResultLines(operation, tools) {
return [
...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []),
`tooldata_${operation}=0`,
...tools.flatMap((tool) => tool.resultLines),
];
}
function opfsRandomToolTableTextLines(tools) {
return tools.flatMap((tool) => [
`T${tool.toolNo}`,
`P${tool.pocketNo}`,
tool.comment,
]);
}
function opfsToolTableSeedText(toolNo, pocketNo, zOffset, diameter, comment) {
return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`;
}
@@ -9440,6 +9456,31 @@
const browserRandomMachineId = "browser-random-toolchanger";
const browserRandomWasmPaths = opfsBrowserSessionWasmPaths("browser-random");
const browserRandomFinishTool = {
toolNo: "2",
pocketNo: "7",
comment: ";browser random finish tool",
resultLines: [
"tool_pocket_7.toolno=2",
"tool_pocket_7.pocketno=7",
"tool_pocket_7.z=3.125",
"tool_pocket_7.diameter=1.5",
"tool_pocket_7.frontangle=12",
"tool_pocket_7.backangle=34",
"tool_pocket_7.orientation=4",
"tool_pocket_7.comment=browser random finish tool",
],
};
const browserRandomRoughTool = {
toolNo: "5",
pocketNo: "9",
comment: ";browser random rough tool",
resultLines: [
"tool_pocket_9.toolno=5",
"tool_pocket_9.pocketno=9",
],
};
const browserRandomTools = [browserRandomFinishTool, browserRandomRoughTool];
const browserRandomTextPaths = await saveMachineTextFiles(browserRandomMachineId, {
ini: [
"[EMC]",
@@ -9477,21 +9518,10 @@
verifyOpfsLoadResult(
"opfs_load_random_tool_table",
loadedRandomSession.toolTable,
[
"tooldata_random_toolchanger=1",
"tooldata_load=0",
"tool_pocket_7.toolno=2",
"tool_pocket_7.pocketno=7",
"tool_pocket_7.z=3.125",
"tool_pocket_7.diameter=1.5",
"tool_pocket_7.frontangle=12",
"tool_pocket_7.backangle=34",
"tool_pocket_7.orientation=4",
"tool_pocket_7.comment=browser random finish tool",
"tool_pocket_9.toolno=5",
"tool_pocket_9.pocketno=9",
"tool_index_for_tool_2=7",
],
opfsRandomToolTableResultLines("load", [
...browserRandomTools,
{ resultLines: ["tool_index_for_tool_2=7"] },
]),
);
const savedRandomToolTable = await saveMachineToolTableToOpfs(
interp,
@@ -9508,24 +9538,16 @@
verifyOpfsSaveResult(
"opfs_save_random_tool_table",
savedRandomToolTable,
[
"tooldata_save=0",
"tool_pocket_7.toolno=2",
"tool_pocket_9.toolno=5",
],
opfsRandomToolTableResultLines("save", [
{ resultLines: ["tool_pocket_7.toolno=2"] },
{ resultLines: ["tool_pocket_9.toolno=5"] },
]),
);
await verifyOpfsMachineFileReadback(
"opfs_saved_random_tool_table_text",
browserRandomMachineId,
"toolTable",
[
"T2",
"P7",
";browser random finish tool",
"T5",
"P9",
";browser random rough tool",
],
opfsRandomToolTableTextLines(browserRandomTools),
);
const iniFileMachineId = "browser-ini-file-session";