Compare commits
17 Commits
e5ea24729c
...
51f58e8822
| Author | SHA1 | Date | |
|---|---|---|---|
| 51f58e8822 | |||
| 30646b08c4 | |||
| 912394d65a | |||
| cb21c867bd | |||
| 922f20d887 | |||
| c4b454c711 | |||
| 0a968b0ebf | |||
| ec2105ddff | |||
| 1a77863ddb | |||
| c7e7f075f3 | |||
| 6ac7cc8953 | |||
| 58215c24cc | |||
| 45d34c8586 | |||
| 4274cda03d | |||
| c260246a8e | |||
| 29ee314afb | |||
| 5cf6f8f339 |
957
text9.txt
957
text9.txt
@@ -465,3 +465,960 @@ host_wasm_opfs_browser_smokes=ok
|
||||
tool-table file block 中的 load/save/readback expected lines 是否能复用现有
|
||||
`opfsToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated file input、
|
||||
WASM path 字符串或保存/读取行为。
|
||||
|
||||
十一、2026-06-14 继续执行记录:browser direct generated non-random tool-table helper guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 direct non-random generated toolchanger file block 的
|
||||
load/save/readback expected lines,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `directToolTableResultLines(...)`,统一 direct non-random generated load/save
|
||||
result expected lines 的拼装;
|
||||
- 新增 `directToolTableTextLines(...)`,统一 direct non-random generated saved
|
||||
tool-table readback expected lines 的拼装;
|
||||
- 为 direct non-random generated file block 增加 `browserDirectFinishTool`、
|
||||
`browserDirectRoughTool` 与 `browserDirectTools` 局部常量;
|
||||
- `load_tool_table_direct` expected lines 改为复用
|
||||
`directToolTableResultLines("load", ...)`,并继续显式保留 `tooldata_last_index=2`
|
||||
和 `tool_index_for_tool_2=1`;
|
||||
- `save_tool_table_direct` expected lines 改为复用
|
||||
`directToolTableResultLines("save", ...)`;
|
||||
- `saved_tool_table_direct_text` expected lines 改为复用
|
||||
`directToolTableTextLines(...)`;
|
||||
- 未改变 direct generated file input、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` session 和
|
||||
direct generated file block 之间是否还能抽出更小的共享 tool-table helper;只改测试
|
||||
胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
十二、2026-06-14 继续执行记录:browser shared tool-table text helper guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 direct `browser-interp` session 与 direct generated
|
||||
file block 之间的 saved tool-table text helper,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `toolTableTextLines(...)`,统一 tool object 到 saved tool-table readback
|
||||
expected lines 的拼装;
|
||||
- `directToolTableTextLines(...)` 改为复用 `toolTableTextLines(...)`;
|
||||
- `opfsRandomToolTableTextLines(...)` 改为复用 `toolTableTextLines(...)`;
|
||||
- 保留 direct 与 random wrapper 名称,避免扩大调用点改动;
|
||||
- 未改变任何 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。优先扫描 tool-table result helper 是否也能抽出
|
||||
不改变输出的 shared `tool.resultLines` flatten helper,或者转向 custom session
|
||||
tool-table load value groups 的局部常量收敛;只改测试胶水,不改变输入、OPFS path、
|
||||
WASM path 字符串或保存/读取行为。
|
||||
|
||||
十三、2026-06-14 继续执行记录:browser shared tool-table result helper guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 tool-table result helper 的重复
|
||||
`tool.resultLines` flatten 逻辑,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `toolTableResultLines(...)`,统一 tool object 到 load/save result expected
|
||||
lines 的 flatten 逻辑;
|
||||
- `directToolTableResultLines(...)` 改为复用 `toolTableResultLines(...)`;
|
||||
- `opfsRandomToolTableResultLines(...)` 改为复用 `toolTableResultLines(...)`;
|
||||
- 保留 direct 与 random wrapper 的输出前缀、extra lines 顺序和调用点不变;
|
||||
- 未改变任何 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。优先扫描 custom session tool-table load/save
|
||||
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 字符串或保存/读取行为。
|
||||
|
||||
十五、2026-06-14 继续执行记录:browser direct session tool-table value object guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 direct `browser-interp` ordinary tool-table
|
||||
load/save/readback value groups,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- `browserInterpToolTableValues` 与 `browserInterpToolTableReadbackValues` 两组并行
|
||||
数组收敛为 `browserInterpToolTable` object;
|
||||
- direct `browser-interp` ordinary tool-table 的 load/save/readback expected lines
|
||||
改为复用 `opfsToolTableToolValues(...)` 的显式 object locals;
|
||||
- front angle、back angle、orientation 与 `tool_index_for_tool_2=1` 仍保留在
|
||||
对应 load expected lines 调用点,保持语义边界外显;
|
||||
- 未改变任何 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。优先扫描是否值得新增
|
||||
`opfsToolTableSeedTextForTool(...)` / `opfsToolTableTextLinesForTool(...)` object
|
||||
adapter,减少普通 OPFS tool-table 调用点的参数展开;只改测试胶水,不改变输入、
|
||||
OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
十六、2026-06-14 继续执行记录:browser OPFS tool-table object adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛普通 OPFS tool-table helper 调用点的参数展开,
|
||||
范围仍只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `opfsToolTableTextLinesForTool(...)`,从显式 tool object locals 转发到
|
||||
`opfsToolTableTextLines(...)`;
|
||||
- 新增 `opfsToolTableSeedTextForTool(...)`,从显式 tool object locals 转发到
|
||||
`opfsToolTableSeedText(...)`;
|
||||
- direct `browser-interp` ordinary tool-table readback 改为复用
|
||||
`opfsToolTableTextLinesForTool(...)`,并继续显式保留 `I/J/Q` readback lines;
|
||||
- INI-named 与 explicit custom session ordinary tool-table seed/readback 调用点改为
|
||||
复用 object adapter;
|
||||
- adapter 只转发已显式保存的 object 字段,不推导 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。优先扫描 ordinary OPFS tool-table load/save
|
||||
result 调用点是否值得新增 `opfsToolTableResultLinesForTool(...)` object adapter;
|
||||
只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
十七、2026-06-14 继续执行记录:browser OPFS tool-table result object adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛普通 OPFS tool-table load/save result helper 调用点
|
||||
的参数展开,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `opfsToolTableResultLinesForTool(...)`,从显式 tool object locals 转发到
|
||||
`opfsToolTableResultLines(...)`;
|
||||
- direct `browser-interp` ordinary tool-table load/save result 调用点改为复用
|
||||
`opfsToolTableResultLinesForTool(...)`;
|
||||
- INI-named 与 explicit custom session ordinary tool-table load/save result 调用点改为
|
||||
复用 `opfsToolTableResultLinesForTool(...)`;
|
||||
- load result 的 front angle、back angle、orientation、comment 与
|
||||
`tool_index_for_tool_2=1` 等 extra lines 仍保留在调用点,保持语义边界外显;
|
||||
- adapter 只转发已显式保存的 object 字段,不推导 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
|
||||
```
|
||||
|
||||
备注:
|
||||
|
||||
- 当前 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。优先扫描普通 OPFS tool-table object helper
|
||||
是否还能合并命名或减少重复 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 字符串或保存/读取行为。
|
||||
|
||||
十九、2026-06-14 继续执行记录:browser INI-named parameter object adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 INI-named custom session parameter result/text
|
||||
helper 调用点的参数展开,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- `iniNamedInitialParameterValues` 改为 `opfsParameterValueSet(...)`;
|
||||
- `iniNamedParameterValues`、`iniNamedParameterExpectedValues` 与
|
||||
`iniNamedParameterReadbackValues` 改为 `opfsParameterValueSet(...)`;
|
||||
- INI-named custom session parameter restore/save/readback/backup 调用点改为复用
|
||||
`opfsParameterResultLinesForValues(...)`、
|
||||
`opfsParameterTextLinesForValues(...)` 与
|
||||
`opfsParameterValuesForValueSet(...)`;
|
||||
- seed file 写入仍显式展开 `parameter5161/5162/5221/5399` 字段,不推导
|
||||
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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 explicit custom session parameter
|
||||
value groups,把 `explicit*Parameter*` 数组也收敛到
|
||||
`opfsParameterValueSet(...)` object adapter;只改测试胶水,不改变输入、OPFS path、
|
||||
WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十、2026-06-14 继续执行记录:browser explicit parameter object adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 explicit custom session parameter result/text helper
|
||||
调用点的参数展开,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- `explicitInitialParameterValues` 改为 `opfsParameterValueSet(...)`;
|
||||
- `explicitParameterValues`、`explicitParameterExpectedValues` 与
|
||||
`explicitParameterReadbackValues` 改为 `opfsParameterValueSet(...)`;
|
||||
- explicit custom session parameter restore/save/readback/backup 调用点改为复用
|
||||
`opfsParameterResultLinesForValues(...)`、
|
||||
`opfsParameterTextLinesForValues(...)` 与
|
||||
`opfsParameterValuesForValueSet(...)`;
|
||||
- seed file 写入仍显式展开 `parameter5161/5162/5221/5399` 字段,不推导
|
||||
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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描是否值得新增
|
||||
`opfsParameterSeedTextForValues(...)` object adapter,收敛 direct、INI-named 与
|
||||
explicit parameter seed file 写入的字段展开;只改测试胶水,不改变输入、OPFS path、
|
||||
WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十一、2026-06-14 继续执行记录:browser parameter seed object adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 parameter seed file 写入的字段展开,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `opfsParameterSeedTextForValues(...)`,从显式 parameter value set 转发到
|
||||
`opfsParameterSeedText(...)`;
|
||||
- INI-named custom session parameter seed file 写入改为复用
|
||||
`opfsParameterSeedTextForValues(...)`;
|
||||
- explicit custom session parameter seed file 写入改为复用
|
||||
`opfsParameterSeedTextForValues(...)`;
|
||||
- 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 direct/generated parameter fixture
|
||||
helpers 是否也能复用 `opfsParameterValueSet(...)` 或 seed/text adapter;只改测试胶水,
|
||||
不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十二、2026-06-14 继续执行记录:browser direct generated parameter fixture adapter guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 direct generated parameter fixture helper 的
|
||||
expected lines 与 seed lines,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `opfsParameterSeedLines(...)`,为 parameter seed text helper 提供结构化
|
||||
seed line 列表;
|
||||
- 新增 `opfsParameterSeedLinesForValues(...)`,从显式 parameter value set 转发到
|
||||
`opfsParameterSeedLines(...)`;
|
||||
- `opfsParameterSeedText(...)` 与 `opfsParameterSeedTextForValues(...)` 改为复用
|
||||
seed line helper;
|
||||
- direct generated `browser-direct.var` seed input 改为复用
|
||||
`opfsParameterSeedLinesForValues(...)`,并继续显式保留 `<_named_param> 123`;
|
||||
- `restore_parameters_direct`、`save_parameters_direct`、
|
||||
`saved_parameters_direct_text` 与 `saved_parameters_direct_backup` expected lines
|
||||
改为复用 parameter object adapter;
|
||||
- `absent=<_named_param>` 与 `<_named_param> 123` 仍保留在对应调用点,保持语义边界外显;
|
||||
- 未改变任何 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 out-of-order 与 missing-required
|
||||
generated parameter fixtures 是否能复用小型 local constants 或 existing parameter
|
||||
helpers;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十三、2026-06-14 继续执行记录:browser generated parameter fixture locals guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 out-of-order 与 missing-required generated
|
||||
parameter fixtures,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- out-of-order generated parameter fixture input 从裸字符串改为局部 seed line 数组;
|
||||
- missing-required generated parameter fixture input 从裸字符串改为
|
||||
`missingRequiredParameterSeedLines` 局部常量;
|
||||
- missing-required expected output 继续显式保留 `parameter_5161=3.5` 与
|
||||
`parameter_5162=0`;
|
||||
- 未引入 parameter 格式推导,未复用不合适的 generic text helper;
|
||||
- 未改变任何 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 direct generated parameter fixture
|
||||
path/name constants 是否还能更清晰地局部命名,或者转向 tool-table generated fixture
|
||||
input locals;只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十四、2026-06-14 继续执行记录:browser direct generated tool-table input locals guard
|
||||
|
||||
本轮按上一条下一步建议转向 direct generated tool-table fixture input locals,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `browserDirectToolTableInputLines` 局部常量,承载 direct non-random generated
|
||||
tool-table fixture input lines;
|
||||
- `writeGeneratedToolTableFixture(...)` 调用改为复用
|
||||
`browserDirectToolTableInputLines.join("\n")`;
|
||||
- 保持 `browserDirectFinishTool`、`browserDirectRoughTool` 与后续 load/save/readback
|
||||
expected lines 不变;
|
||||
- 未改变任何 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 direct generated random tool-table fixture
|
||||
input lines 是否也能抽为局部常量;只改测试胶水,不改变输入、OPFS path、WASM path
|
||||
字符串或保存/读取行为。
|
||||
|
||||
二十五、2026-06-14 继续执行记录:browser direct generated random tool-table input locals guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 direct generated random tool-table fixture input
|
||||
locals,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `browserDirectRandomToolTableInputLines` 局部常量,承载 direct random
|
||||
generated tool-table fixture input lines;
|
||||
- `writeGeneratedToolTableFixture(...)` 调用改为复用
|
||||
`browserDirectRandomToolTableInputLines.join("\n")`;
|
||||
- 保持 `browserDirectRandomFinishTool`、`browserDirectRandomRoughTool` 与后续
|
||||
load/save/readback expected lines 不变;
|
||||
- 未改变任何 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 browser OPFS session tool-table seed
|
||||
text 是否还能抽为局部 constants,或者转向 direct generated tool-table path constants;
|
||||
只改测试胶水,不改变输入、OPFS path、WASM path 字符串或保存/读取行为。
|
||||
|
||||
二十六、2026-06-14 继续执行记录:browser OPFS session tool-table seed text local guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 browser OPFS session tool-table seed text,范围仍只触及
|
||||
`wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `browserInterpToolTableInputText` 局部常量,承载 ordinary
|
||||
`browser-interp` session 的 tool-table seed text;
|
||||
- `saveMachineTextFiles(...)` 中 ordinary session 的 `toolTable` 字段改为复用
|
||||
`browserInterpToolTableInputText`;
|
||||
- 保持 `browserInterpToolTable` object、load/save/readback expected lines、
|
||||
OPFS path 与 WASM path 不变;
|
||||
- 未改变任何 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;browser smoke 与
|
||||
`verify_host_smokes.sh` 的 browser 阶段需授权运行;
|
||||
- 本轮 browser smoke 与 host smoke 均已授权运行并通过。
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 random OPFS session tool-table seed
|
||||
text 是否也能抽为局部 constants;只改测试胶水,不改变输入、OPFS path、WASM path
|
||||
字符串或保存/读取行为。
|
||||
|
||||
二十七、2026-06-14 继续执行记录:browser random OPFS session tool-table seed text local guard
|
||||
|
||||
本轮按上一条下一步建议继续收敛 browser random OPFS session tool-table seed text,范围仍
|
||||
只触及 `wasm-port/tests/browser/interp_smoke.html` 的 browser/OPFS test glue。
|
||||
|
||||
完成内容:
|
||||
|
||||
- 新增 `browserRandomToolTableInputText` 局部常量,承载 random
|
||||
`browser-random-toolchanger` session 的 tool-table seed text;
|
||||
- `saveMachineTextFiles(...)` 中 random session 的 `toolTable` 字段改为复用
|
||||
`browserRandomToolTableInputText`;
|
||||
- 保持 `browserRandomTools` object、load/save/readback expected lines、OPFS path 与
|
||||
WASM path 不变;
|
||||
- 未改变任何 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
|
||||
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
|
||||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||||
wasm-port/tests/host/verify_host_smokes.sh
|
||||
```
|
||||
|
||||
关键输出:
|
||||
|
||||
```text
|
||||
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
|
||||
browser_interp_smoke=ok
|
||||
host_wasm_opfs_browser_smokes=ok
|
||||
```
|
||||
|
||||
下一步建议:
|
||||
|
||||
继续小批量 browser test glue guard。优先扫描 direct/random session 的 parameter/tool-table
|
||||
seed text 是否还能继续局部常量化;只改测试胶水,不改变输入、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) {
|
||||
return [
|
||||
`5161${separator}${parameter5161}`,
|
||||
@@ -4566,13 +4576,45 @@
|
||||
];
|
||||
}
|
||||
|
||||
function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||
function opfsParameterTextLinesForValues(separator, values) {
|
||||
return opfsParameterTextLines(
|
||||
separator,
|
||||
values.parameter5161,
|
||||
values.parameter5162,
|
||||
values.parameter5221,
|
||||
values.parameter5399,
|
||||
);
|
||||
}
|
||||
|
||||
function opfsParameterSeedLines(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||
return [
|
||||
`5161 ${parameter5161}`,
|
||||
`5162 ${parameter5162}`,
|
||||
"5220 1",
|
||||
`5221 ${parameter5221}`,
|
||||
`5399 ${parameter5399}`,
|
||||
];
|
||||
}
|
||||
|
||||
function opfsParameterSeedText(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||
return [
|
||||
...opfsParameterSeedLines(parameter5161, parameter5162, parameter5221, parameter5399),
|
||||
"",
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
function opfsParameterSeedLinesForValues(values) {
|
||||
return opfsParameterSeedLines(
|
||||
values.parameter5161,
|
||||
values.parameter5162,
|
||||
values.parameter5221,
|
||||
values.parameter5399,
|
||||
);
|
||||
}
|
||||
|
||||
function opfsParameterSeedTextForValues(values) {
|
||||
return [
|
||||
...opfsParameterSeedLinesForValues(values),
|
||||
"",
|
||||
].join("\n");
|
||||
}
|
||||
@@ -4589,6 +4631,15 @@
|
||||
];
|
||||
}
|
||||
|
||||
function opfsParameterValueSet(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||
return {
|
||||
parameter5161,
|
||||
parameter5162,
|
||||
parameter5221,
|
||||
parameter5399,
|
||||
};
|
||||
}
|
||||
|
||||
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||
return {
|
||||
5161: parameter5161,
|
||||
@@ -4599,6 +4650,15 @@
|
||||
};
|
||||
}
|
||||
|
||||
function opfsParameterValuesForValueSet(values) {
|
||||
return opfsParameterValues(
|
||||
values.parameter5161,
|
||||
values.parameter5162,
|
||||
values.parameter5221,
|
||||
values.parameter5399,
|
||||
);
|
||||
}
|
||||
|
||||
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
|
||||
return [
|
||||
`tooldata_${operation}=0`,
|
||||
@@ -4608,6 +4668,10 @@
|
||||
];
|
||||
}
|
||||
|
||||
function opfsToolTableResultLinesForTool(operation, tool, extraLines = []) {
|
||||
return opfsToolTableResultLines(operation, tool.toolNo, tool.pocketNo, extraLines);
|
||||
}
|
||||
|
||||
function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment, extraLines = []) {
|
||||
return [
|
||||
`T${toolNo}`,
|
||||
@@ -4619,26 +4683,90 @@
|
||||
];
|
||||
}
|
||||
|
||||
function opfsRandomToolTableResultLines(operation, tools) {
|
||||
function opfsToolTableTextLinesForTool(tool, extraLines = []) {
|
||||
return opfsToolTableTextLines(
|
||||
tool.toolNo,
|
||||
tool.pocketNo,
|
||||
tool.readbackZOffset,
|
||||
tool.readbackDiameter,
|
||||
tool.comment,
|
||||
extraLines,
|
||||
);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
function directToolTableResultLines(operation, tools, extraLines = []) {
|
||||
return [
|
||||
...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []),
|
||||
`tooldata_${operation}=0`,
|
||||
...tools.flatMap((tool) => tool.resultLines),
|
||||
...extraLines,
|
||||
...toolTableResultLines(tools),
|
||||
];
|
||||
}
|
||||
|
||||
function opfsRandomToolTableTextLines(tools) {
|
||||
function toolTableTextLines(tools) {
|
||||
return tools.flatMap((tool) => [
|
||||
`T${tool.toolNo}`,
|
||||
`P${tool.pocketNo}`,
|
||||
...(tool.extraTextLines ?? []),
|
||||
tool.comment,
|
||||
]);
|
||||
}
|
||||
|
||||
function directToolTableTextLines(tools) {
|
||||
return toolTableTextLines(tools);
|
||||
}
|
||||
|
||||
function opfsRandomToolTableResultLines(operation, tools) {
|
||||
return [
|
||||
...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []),
|
||||
`tooldata_${operation}=0`,
|
||||
...toolTableResultLines(tools),
|
||||
];
|
||||
}
|
||||
|
||||
function opfsRandomToolTableTextLines(tools) {
|
||||
return toolTableTextLines(tools);
|
||||
}
|
||||
|
||||
function opfsToolTableSeedText(toolNo, pocketNo, zOffset, diameter, comment) {
|
||||
return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`;
|
||||
}
|
||||
|
||||
function opfsToolTableSeedTextForTool(tool) {
|
||||
return opfsToolTableSeedText(
|
||||
tool.toolNo,
|
||||
tool.pocketNo,
|
||||
tool.zOffset,
|
||||
tool.diameter,
|
||||
tool.comment,
|
||||
);
|
||||
}
|
||||
|
||||
function opfsCustomSessionIniText(machineId, parameterFilename, toolTableFilename) {
|
||||
return [
|
||||
"[EMC]",
|
||||
@@ -9139,7 +9267,11 @@
|
||||
const outOfOrderParameterFilePath = writeGeneratedParameterFixture(
|
||||
interp,
|
||||
"/work/browser-out-of-order.var",
|
||||
"5220 1\n5161 2\n",
|
||||
[
|
||||
"5220 1",
|
||||
"5161 2",
|
||||
"",
|
||||
].join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"restore_parameters_out_of_order",
|
||||
@@ -9150,10 +9282,15 @@
|
||||
].join("\n"),
|
||||
);
|
||||
|
||||
const missingRequiredParameterSeedLines = [
|
||||
"5161 3.5",
|
||||
"5220 1",
|
||||
"",
|
||||
];
|
||||
const missingRequiredParameterFilePath = writeGeneratedParameterFixture(
|
||||
interp,
|
||||
"/work/browser-missing-required.var",
|
||||
"5161 3.5\n5220 1\n",
|
||||
missingRequiredParameterSeedLines.join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"restore_parameters_missing_required",
|
||||
@@ -9169,51 +9306,40 @@
|
||||
interp,
|
||||
"/work/browser-direct.var",
|
||||
[
|
||||
"5161 10.5",
|
||||
"5162 20.25",
|
||||
"5220 1",
|
||||
"5221 2.25",
|
||||
"5399 44",
|
||||
...opfsParameterSeedLinesForValues(
|
||||
opfsParameterValueSet("10.5", "20.25", "2.25", "44"),
|
||||
),
|
||||
"<_named_param> 123",
|
||||
"",
|
||||
].join("\n"),
|
||||
);
|
||||
const browserDirectInitialParameterValues = opfsParameterValueSet("10.5", "20.25", "2.25", "44");
|
||||
verifyExpectedOutput(
|
||||
"restore_parameters_direct",
|
||||
interp.restoreParameters(browserParameterFilePath),
|
||||
[
|
||||
"restore_parameters=0",
|
||||
"parameter_5161=10.5",
|
||||
"parameter_5162=20.25",
|
||||
"parameter_5221=2.25",
|
||||
"parameter_5399=44",
|
||||
].join("\n"),
|
||||
opfsParameterResultLinesForValues("restore", browserDirectInitialParameterValues).join("\n"),
|
||||
);
|
||||
const browserDirectParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6);
|
||||
const browserDirectParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6");
|
||||
const browserDirectParameterReadbackValues = opfsParameterValueSet(
|
||||
"12.340000",
|
||||
"56.780000",
|
||||
"9.870000",
|
||||
"66.600000",
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"save_parameters_direct",
|
||||
interp.saveParameters(browserParameterFilePath, {
|
||||
5161: 12.34,
|
||||
5162: 56.78,
|
||||
5220: 1.0,
|
||||
5221: 9.87,
|
||||
5399: 66.6,
|
||||
}),
|
||||
[
|
||||
"save_parameters=0",
|
||||
"parameter_5161=12.34",
|
||||
"parameter_5162=56.78",
|
||||
"parameter_5221=9.87",
|
||||
"parameter_5399=66.6",
|
||||
].join("\n"),
|
||||
interp.saveParameters(
|
||||
browserParameterFilePath,
|
||||
opfsParameterValuesForValueSet(browserDirectParameterValues),
|
||||
),
|
||||
opfsParameterResultLinesForValues("save", browserDirectParameterExpectedValues).join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"saved_parameters_direct_text",
|
||||
interp.readTextFile(browserParameterFilePath),
|
||||
[
|
||||
"5161\t12.340000",
|
||||
"5162\t56.780000",
|
||||
"5221\t9.870000",
|
||||
"5399\t66.600000",
|
||||
...opfsParameterTextLinesForValues("\t", browserDirectParameterReadbackValues),
|
||||
"absent=<_named_param>",
|
||||
].join("\n"),
|
||||
);
|
||||
@@ -9221,29 +9347,26 @@
|
||||
"saved_parameters_direct_backup",
|
||||
interp.readTextFile(`${browserParameterFilePath}.bak`),
|
||||
[
|
||||
"5161 10.5",
|
||||
"5162 20.25",
|
||||
"5221 2.25",
|
||||
"5399 44",
|
||||
...opfsParameterTextLinesForValues(" ", browserDirectInitialParameterValues),
|
||||
"<_named_param> 123",
|
||||
].join("\n"),
|
||||
);
|
||||
|
||||
const browserDirectToolTableInputLines = [
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser direct finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser direct rough tool",
|
||||
"",
|
||||
];
|
||||
const browserToolTablePath = writeGeneratedToolTableFixture(
|
||||
interp,
|
||||
"/work/browser-direct-tool.tbl",
|
||||
[
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser direct finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser direct rough tool",
|
||||
"",
|
||||
].join("\n"),
|
||||
browserDirectToolTableInputLines.join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"load_tool_table_direct",
|
||||
interp.loadToolTable(browserToolTablePath),
|
||||
[
|
||||
"tooldata_load=0",
|
||||
"tooldata_last_index=2",
|
||||
const browserDirectFinishTool = {
|
||||
toolNo: "2",
|
||||
pocketNo: "7",
|
||||
comment: ";browser direct finish tool",
|
||||
resultLines: [
|
||||
"tool_1.toolno=2",
|
||||
"tool_1.pocketno=7",
|
||||
"tool_1.z=3.125",
|
||||
@@ -9252,47 +9375,57 @@
|
||||
"tool_1.backangle=34",
|
||||
"tool_1.orientation=4",
|
||||
"tool_1.comment=browser direct finish tool",
|
||||
"tool_2.toolno=5",
|
||||
"tool_2.pocketno=9",
|
||||
"tool_2.comment=browser direct rough tool",
|
||||
"tool_index_for_tool_2=1",
|
||||
].join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"save_tool_table_direct",
|
||||
interp.saveToolTable(browserToolTablePath),
|
||||
[
|
||||
"tooldata_save=0",
|
||||
"tool_1.toolno=2",
|
||||
"tool_2.toolno=5",
|
||||
].join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"saved_tool_table_direct_text",
|
||||
interp.readTextFile(browserToolTablePath),
|
||||
[
|
||||
"T2",
|
||||
"P7",
|
||||
],
|
||||
extraTextLines: [
|
||||
"Z+3.125000",
|
||||
"D+1.500000",
|
||||
"I+12.000000",
|
||||
"J+34.000000",
|
||||
"Q4",
|
||||
";browser direct finish tool",
|
||||
"T5",
|
||||
"P9",
|
||||
";browser direct rough tool",
|
||||
].join("\n"),
|
||||
],
|
||||
};
|
||||
const browserDirectRoughTool = {
|
||||
toolNo: "5",
|
||||
pocketNo: "9",
|
||||
comment: ";browser direct rough tool",
|
||||
resultLines: [
|
||||
"tool_2.toolno=5",
|
||||
"tool_2.pocketno=9",
|
||||
"tool_2.comment=browser direct rough tool",
|
||||
],
|
||||
};
|
||||
const browserDirectTools = [browserDirectFinishTool, browserDirectRoughTool];
|
||||
verifyExpectedOutput(
|
||||
"load_tool_table_direct",
|
||||
interp.loadToolTable(browserToolTablePath),
|
||||
directToolTableResultLines("load", browserDirectTools, [
|
||||
"tooldata_last_index=2",
|
||||
"tool_index_for_tool_2=1",
|
||||
]).join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"save_tool_table_direct",
|
||||
interp.saveToolTable(browserToolTablePath),
|
||||
directToolTableResultLines("save", [
|
||||
{ resultLines: ["tool_1.toolno=2"] },
|
||||
{ resultLines: ["tool_2.toolno=5"] },
|
||||
]).join("\n"),
|
||||
);
|
||||
verifyExpectedOutput(
|
||||
"saved_tool_table_direct_text",
|
||||
interp.readTextFile(browserToolTablePath),
|
||||
directToolTableTextLines(browserDirectTools).join("\n"),
|
||||
);
|
||||
|
||||
const browserDirectRandomToolTableInputLines = [
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser direct random finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser direct random rough tool",
|
||||
"",
|
||||
];
|
||||
const browserRandomToolTablePath = writeGeneratedToolTableFixture(
|
||||
interp,
|
||||
"/work/browser-direct-random-tool.tbl",
|
||||
[
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser direct random finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser direct random rough tool",
|
||||
"",
|
||||
].join("\n"),
|
||||
browserDirectRandomToolTableInputLines.join("\n"),
|
||||
);
|
||||
const browserDirectRandomFinishTool = {
|
||||
toolNo: "2",
|
||||
@@ -9345,10 +9478,11 @@
|
||||
|
||||
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 browserInterpToolTableInputText = "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n";
|
||||
const browserInterpTextPaths = await saveMachineTextFiles(browserInterpMachineId, {
|
||||
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
|
||||
toolTable: "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n",
|
||||
toolTable: browserInterpToolTableInputText,
|
||||
parameters: browserDirectParameterSeedLines(true).join("\n"),
|
||||
});
|
||||
assertMachineTextStorePaths(
|
||||
@@ -9372,36 +9506,43 @@
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_restore_parameters",
|
||||
loadedSession.parameters,
|
||||
opfsParameterResultLines("restore", ...browserInterpInitialParameterValues),
|
||||
opfsParameterResultLinesForValues("restore", browserInterpInitialParameterValues),
|
||||
);
|
||||
const browserInterpToolTableValues = ["2", "7", "3.125", "1.5", "browser finish tool"];
|
||||
const browserInterpToolTableReadbackValues = [
|
||||
const browserInterpToolTable = opfsToolTableToolValues(
|
||||
"2",
|
||||
"7",
|
||||
"3.125",
|
||||
"1.5",
|
||||
";browser finish tool",
|
||||
"browser finish tool",
|
||||
"+3.125000",
|
||||
"+1.500000",
|
||||
";browser finish tool",
|
||||
];
|
||||
);
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_load_tool_table",
|
||||
loadedSession.toolTable,
|
||||
opfsToolTableResultLines("load", browserInterpToolTableValues[0], browserInterpToolTableValues[1], [
|
||||
`tool_1.z=${browserInterpToolTableValues[2]}`,
|
||||
`tool_1.diameter=${browserInterpToolTableValues[3]}`,
|
||||
opfsToolTableResultLinesForTool("load", browserInterpToolTable, [
|
||||
`tool_1.z=${browserInterpToolTable.zOffset}`,
|
||||
`tool_1.diameter=${browserInterpToolTable.diameter}`,
|
||||
"tool_1.frontangle=12",
|
||||
"tool_1.backangle=34",
|
||||
"tool_1.orientation=4",
|
||||
`tool_1.comment=${browserInterpToolTableValues[4]}`,
|
||||
`tool_1.comment=${browserInterpToolTable.loadComment}`,
|
||||
"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(
|
||||
@@ -9414,14 +9555,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>",
|
||||
],
|
||||
);
|
||||
@@ -9429,7 +9570,7 @@
|
||||
"opfs_saved_parameter_backup_text",
|
||||
savedParameters.backupOpfsPath,
|
||||
[
|
||||
...opfsParameterTextLines(" ", ...browserInterpInitialParameterValues),
|
||||
...opfsParameterTextLinesForValues(" ", browserInterpInitialParameterValues),
|
||||
"<_named_param> 123",
|
||||
],
|
||||
);
|
||||
@@ -9448,16 +9589,13 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_tool_table",
|
||||
savedToolTable,
|
||||
opfsToolTableResultLines("save", browserInterpToolTableValues[0], browserInterpToolTableValues[1]),
|
||||
opfsToolTableResultLinesForTool("save", browserInterpToolTable),
|
||||
);
|
||||
await verifyOpfsMachineFileReadback(
|
||||
"opfs_saved_tool_table_text",
|
||||
browserInterpMachineId,
|
||||
"toolTable",
|
||||
opfsToolTableTextLines(
|
||||
...browserInterpToolTableReadbackValues,
|
||||
["I+12.000000", "J+34.000000", "Q4"],
|
||||
),
|
||||
opfsToolTableTextLinesForTool(browserInterpToolTable, ["I+12.000000", "J+34.000000", "Q4"]),
|
||||
);
|
||||
|
||||
const browserRandomMachineId = "browser-random-toolchanger";
|
||||
@@ -9487,6 +9625,11 @@
|
||||
],
|
||||
};
|
||||
const browserRandomTools = [browserRandomFinishTool, browserRandomRoughTool];
|
||||
const browserRandomToolTableInputText = [
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser random finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser random rough tool",
|
||||
"",
|
||||
].join("\n");
|
||||
const browserRandomTextPaths = await saveMachineTextFiles(browserRandomMachineId, {
|
||||
ini: [
|
||||
"[EMC]",
|
||||
@@ -9496,11 +9639,7 @@
|
||||
"RANDOM_TOOLCHANGER = yes",
|
||||
"",
|
||||
].join("\n"),
|
||||
toolTable: [
|
||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser random finish tool",
|
||||
"T5 P9 X1 Y2 Z3 ;browser random rough tool",
|
||||
"",
|
||||
].join("\n"),
|
||||
toolTable: browserRandomToolTableInputText,
|
||||
parameters: browserDirectParameterSeedLines().join("\n"),
|
||||
});
|
||||
assertMachineTextStorePaths(
|
||||
@@ -9575,19 +9714,26 @@
|
||||
browserIniFileTextPaths,
|
||||
iniFileMachineId,
|
||||
);
|
||||
const iniNamedInitialParameterValues = ["31.25", "62.5", "4.5", "99"];
|
||||
const iniNamedInitialParameterValues = opfsParameterValueSet("31.25", "62.5", "4.5", "99");
|
||||
await writeOpfsMachineFile(
|
||||
iniFileMachineId,
|
||||
iniFileParameterFilename,
|
||||
opfsParameterSeedText(...iniNamedInitialParameterValues),
|
||||
opfsParameterSeedTextForValues(iniNamedInitialParameterValues),
|
||||
);
|
||||
const iniNamedToolTable = opfsToolTableToolValues(
|
||||
"8",
|
||||
"8",
|
||||
"4.5",
|
||||
"0.5",
|
||||
";browser custom tool",
|
||||
"browser custom tool",
|
||||
"+4.500000",
|
||||
"+0.500000",
|
||||
);
|
||||
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"];
|
||||
await writeOpfsMachineFile(
|
||||
iniFileMachineId,
|
||||
iniFileToolTableFilename,
|
||||
opfsToolTableSeedText(...iniNamedToolTableValues),
|
||||
opfsToolTableSeedTextForTool(iniNamedToolTable),
|
||||
);
|
||||
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
||||
interp,
|
||||
@@ -9615,15 +9761,20 @@
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_load_ini_named_parameter_file",
|
||||
loadedIniFileSession.parameters,
|
||||
opfsParameterResultLines("restore", ...iniNamedInitialParameterValues),
|
||||
opfsParameterResultLinesForValues("restore", iniNamedInitialParameterValues),
|
||||
);
|
||||
const iniNamedParameterValues = opfsParameterValueSet(33.75, 67.5, 5.25, 199);
|
||||
const iniNamedParameterExpectedValues = opfsParameterValueSet("33.75", "67.5", "5.25", "199");
|
||||
const iniNamedParameterReadbackValues = opfsParameterValueSet(
|
||||
"33.750000",
|
||||
"67.500000",
|
||||
"5.250000",
|
||||
"199.000000",
|
||||
);
|
||||
const iniNamedParameterValues = [33.75, 67.5, 5.25, 199];
|
||||
const iniNamedParameterExpectedValues = ["33.75", "67.5", "5.25", "199"];
|
||||
const iniNamedParameterReadbackValues = ["33.750000", "67.500000", "5.250000", "199.000000"];
|
||||
const savedIniNamedParameters = await saveMachineParametersToOpfs(
|
||||
interp,
|
||||
iniFileMachineId,
|
||||
opfsParameterValues(...iniNamedParameterValues),
|
||||
opfsParameterValuesForValueSet(iniNamedParameterValues),
|
||||
opfsLoadedFileSaveOptions(loadedIniFileSession.parameters),
|
||||
);
|
||||
assertOpfsSavedParameterStaging(
|
||||
@@ -9636,25 +9787,25 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_ini_named_parameter_file",
|
||||
savedIniNamedParameters,
|
||||
opfsParameterResultLines("save", ...iniNamedParameterExpectedValues),
|
||||
opfsParameterResultLinesForValues("save", iniNamedParameterExpectedValues),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_ini_named_parameter_text",
|
||||
loadedIniFileSession.parameters.opfsPath,
|
||||
opfsParameterTextLines("\t", ...iniNamedParameterReadbackValues),
|
||||
opfsParameterTextLinesForValues("\t", iniNamedParameterReadbackValues),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_ini_named_parameter_backup_text",
|
||||
savedIniNamedParameters.backupOpfsPath,
|
||||
opfsParameterTextLines(" ", ...iniNamedInitialParameterValues),
|
||||
opfsParameterTextLinesForValues(" ", iniNamedInitialParameterValues),
|
||||
);
|
||||
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]}`,
|
||||
opfsToolTableResultLinesForTool("load", iniNamedToolTable, [
|
||||
`tool_1.z=${iniNamedToolTable.zOffset}`,
|
||||
`tool_1.diameter=${iniNamedToolTable.diameter}`,
|
||||
`tool_1.comment=${iniNamedToolTable.loadComment}`,
|
||||
]),
|
||||
);
|
||||
const savedIniNamedToolTable = await saveMachineToolTableToOpfs(
|
||||
@@ -9672,12 +9823,12 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_ini_named_tool_table",
|
||||
savedIniNamedToolTable,
|
||||
opfsToolTableResultLines("save", iniNamedToolTableValues[0], iniNamedToolTableValues[1]),
|
||||
opfsToolTableResultLinesForTool("save", iniNamedToolTable),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_ini_named_tool_table_text",
|
||||
loadedIniFileSession.toolTable.opfsPath,
|
||||
opfsToolTableTextLines(...iniNamedToolTableReadbackValues),
|
||||
opfsToolTableTextLinesForTool(iniNamedToolTable),
|
||||
);
|
||||
|
||||
const iniOverrideMachineId = "browser-ini-override-session";
|
||||
@@ -9699,19 +9850,26 @@
|
||||
browserIniOverrideTextPaths,
|
||||
iniOverrideMachineId,
|
||||
);
|
||||
const explicitInitialParameterValues = ["41.25", "82.5", "6.5", "101"];
|
||||
const explicitInitialParameterValues = opfsParameterValueSet("41.25", "82.5", "6.5", "101");
|
||||
await writeOpfsMachineFile(
|
||||
iniOverrideMachineId,
|
||||
explicitParameterFilename,
|
||||
opfsParameterSeedText(...explicitInitialParameterValues),
|
||||
opfsParameterSeedTextForValues(explicitInitialParameterValues),
|
||||
);
|
||||
const explicitToolTable = opfsToolTableToolValues(
|
||||
"9",
|
||||
"9",
|
||||
"5.5",
|
||||
"0.625",
|
||||
";browser explicit tool",
|
||||
"browser explicit tool",
|
||||
"+5.500000",
|
||||
"+0.625000",
|
||||
);
|
||||
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"];
|
||||
await writeOpfsMachineFile(
|
||||
iniOverrideMachineId,
|
||||
explicitToolTableFilename,
|
||||
opfsToolTableSeedText(...explicitToolTableValues),
|
||||
opfsToolTableSeedTextForTool(explicitToolTable),
|
||||
);
|
||||
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
||||
interp,
|
||||
@@ -9743,24 +9901,29 @@
|
||||
verifyOpfsLoadResult(
|
||||
"opfs_load_explicit_parameter_file",
|
||||
loadedIniOverrideSession.parameters,
|
||||
opfsParameterResultLines("restore", ...explicitInitialParameterValues),
|
||||
opfsParameterResultLinesForValues("restore", explicitInitialParameterValues),
|
||||
);
|
||||
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]}`,
|
||||
opfsToolTableResultLinesForTool("load", explicitToolTable, [
|
||||
`tool_1.z=${explicitToolTable.zOffset}`,
|
||||
`tool_1.diameter=${explicitToolTable.diameter}`,
|
||||
`tool_1.comment=${explicitToolTable.loadComment}`,
|
||||
]),
|
||||
);
|
||||
const explicitParameterValues = [51.25, 102.5, 7.5, 202];
|
||||
const explicitParameterExpectedValues = ["51.25", "102.5", "7.5", "202"];
|
||||
const explicitParameterReadbackValues = ["51.250000", "102.500000", "7.500000", "202.000000"];
|
||||
const explicitParameterValues = opfsParameterValueSet(51.25, 102.5, 7.5, 202);
|
||||
const explicitParameterExpectedValues = opfsParameterValueSet("51.25", "102.5", "7.5", "202");
|
||||
const explicitParameterReadbackValues = opfsParameterValueSet(
|
||||
"51.250000",
|
||||
"102.500000",
|
||||
"7.500000",
|
||||
"202.000000",
|
||||
);
|
||||
const savedExplicitParameters = await saveMachineParametersToOpfs(
|
||||
interp,
|
||||
iniOverrideMachineId,
|
||||
opfsParameterValues(...explicitParameterValues),
|
||||
opfsParameterValuesForValueSet(explicitParameterValues),
|
||||
opfsLoadedFileSaveOptions(loadedIniOverrideSession.parameters),
|
||||
);
|
||||
assertOpfsSavedParameterStaging(
|
||||
@@ -9773,17 +9936,17 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_explicit_parameter_file",
|
||||
savedExplicitParameters,
|
||||
opfsParameterResultLines("save", ...explicitParameterExpectedValues),
|
||||
opfsParameterResultLinesForValues("save", explicitParameterExpectedValues),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_explicit_parameter_text",
|
||||
loadedIniOverrideSession.parameters.opfsPath,
|
||||
opfsParameterTextLines("\t", ...explicitParameterReadbackValues),
|
||||
opfsParameterTextLinesForValues("\t", explicitParameterReadbackValues),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_explicit_parameter_backup_text",
|
||||
savedExplicitParameters.backupOpfsPath,
|
||||
opfsParameterTextLines(" ", ...explicitInitialParameterValues),
|
||||
opfsParameterTextLinesForValues(" ", explicitInitialParameterValues),
|
||||
);
|
||||
const savedExplicitToolTable = await saveMachineToolTableToOpfs(
|
||||
interp,
|
||||
@@ -9800,12 +9963,12 @@
|
||||
verifyOpfsSaveResult(
|
||||
"opfs_save_explicit_tool_table",
|
||||
savedExplicitToolTable,
|
||||
opfsToolTableResultLines("save", explicitToolTableValues[0], explicitToolTableValues[1]),
|
||||
opfsToolTableResultLinesForTool("save", explicitToolTable),
|
||||
);
|
||||
await verifyOpfsReadback(
|
||||
"opfs_saved_explicit_tool_table_text",
|
||||
loadedIniOverrideSession.toolTable.opfsPath,
|
||||
opfsToolTableTextLines(...explicitToolTableReadbackValues),
|
||||
opfsToolTableTextLinesForTool(explicitToolTable),
|
||||
);
|
||||
|
||||
await verifyOpfsInvalidIniSessionRejects(
|
||||
|
||||
Reference in New Issue
Block a user