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 是否能复用现有
|
tool-table file block 中的 load/save/readback expected lines 是否能复用现有
|
||||||
`opfsToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated file input、
|
`opfsToolTable*` helpers 或局部常量;只改测试胶水,不改变 direct generated file input、
|
||||||
WASM path 字符串或保存/读取行为。
|
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) {
|
function opfsParameterTextLines(separator, parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
return [
|
return [
|
||||||
`5161${separator}${parameter5161}`,
|
`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 [
|
return [
|
||||||
`5161 ${parameter5161}`,
|
`5161 ${parameter5161}`,
|
||||||
`5162 ${parameter5162}`,
|
`5162 ${parameter5162}`,
|
||||||
"5220 1",
|
"5220 1",
|
||||||
`5221 ${parameter5221}`,
|
`5221 ${parameter5221}`,
|
||||||
`5399 ${parameter5399}`,
|
`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");
|
].join("\n");
|
||||||
}
|
}
|
||||||
@@ -4589,6 +4631,15 @@
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function opfsParameterValueSet(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
|
return {
|
||||||
|
parameter5161,
|
||||||
|
parameter5162,
|
||||||
|
parameter5221,
|
||||||
|
parameter5399,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
|
function opfsParameterValues(parameter5161, parameter5162, parameter5221, parameter5399) {
|
||||||
return {
|
return {
|
||||||
5161: parameter5161,
|
5161: parameter5161,
|
||||||
@@ -4599,6 +4650,15 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function opfsParameterValuesForValueSet(values) {
|
||||||
|
return opfsParameterValues(
|
||||||
|
values.parameter5161,
|
||||||
|
values.parameter5162,
|
||||||
|
values.parameter5221,
|
||||||
|
values.parameter5399,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
|
function opfsToolTableResultLines(operation, toolNo, pocketNo, extraLines = []) {
|
||||||
return [
|
return [
|
||||||
`tooldata_${operation}=0`,
|
`tooldata_${operation}=0`,
|
||||||
@@ -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 = []) {
|
function opfsToolTableTextLines(toolNo, pocketNo, zOffset, diameter, comment, extraLines = []) {
|
||||||
return [
|
return [
|
||||||
`T${toolNo}`,
|
`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 [
|
return [
|
||||||
...(operation === "load" ? ["tooldata_random_toolchanger=1"] : []),
|
|
||||||
`tooldata_${operation}=0`,
|
`tooldata_${operation}=0`,
|
||||||
...tools.flatMap((tool) => tool.resultLines),
|
...extraLines,
|
||||||
|
...toolTableResultLines(tools),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
function opfsRandomToolTableTextLines(tools) {
|
function toolTableTextLines(tools) {
|
||||||
return tools.flatMap((tool) => [
|
return tools.flatMap((tool) => [
|
||||||
`T${tool.toolNo}`,
|
`T${tool.toolNo}`,
|
||||||
`P${tool.pocketNo}`,
|
`P${tool.pocketNo}`,
|
||||||
|
...(tool.extraTextLines ?? []),
|
||||||
tool.comment,
|
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) {
|
function opfsToolTableSeedText(toolNo, pocketNo, zOffset, diameter, comment) {
|
||||||
return `T${toolNo} P${pocketNo} Z${zOffset} D${diameter} ${comment}\n`;
|
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) {
|
function opfsCustomSessionIniText(machineId, parameterFilename, toolTableFilename) {
|
||||||
return [
|
return [
|
||||||
"[EMC]",
|
"[EMC]",
|
||||||
@@ -9139,7 +9267,11 @@
|
|||||||
const outOfOrderParameterFilePath = writeGeneratedParameterFixture(
|
const outOfOrderParameterFilePath = writeGeneratedParameterFixture(
|
||||||
interp,
|
interp,
|
||||||
"/work/browser-out-of-order.var",
|
"/work/browser-out-of-order.var",
|
||||||
"5220 1\n5161 2\n",
|
[
|
||||||
|
"5220 1",
|
||||||
|
"5161 2",
|
||||||
|
"",
|
||||||
|
].join("\n"),
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"restore_parameters_out_of_order",
|
"restore_parameters_out_of_order",
|
||||||
@@ -9150,10 +9282,15 @@
|
|||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const missingRequiredParameterSeedLines = [
|
||||||
|
"5161 3.5",
|
||||||
|
"5220 1",
|
||||||
|
"",
|
||||||
|
];
|
||||||
const missingRequiredParameterFilePath = writeGeneratedParameterFixture(
|
const missingRequiredParameterFilePath = writeGeneratedParameterFixture(
|
||||||
interp,
|
interp,
|
||||||
"/work/browser-missing-required.var",
|
"/work/browser-missing-required.var",
|
||||||
"5161 3.5\n5220 1\n",
|
missingRequiredParameterSeedLines.join("\n"),
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"restore_parameters_missing_required",
|
"restore_parameters_missing_required",
|
||||||
@@ -9169,51 +9306,40 @@
|
|||||||
interp,
|
interp,
|
||||||
"/work/browser-direct.var",
|
"/work/browser-direct.var",
|
||||||
[
|
[
|
||||||
"5161 10.5",
|
...opfsParameterSeedLinesForValues(
|
||||||
"5162 20.25",
|
opfsParameterValueSet("10.5", "20.25", "2.25", "44"),
|
||||||
"5220 1",
|
),
|
||||||
"5221 2.25",
|
|
||||||
"5399 44",
|
|
||||||
"<_named_param> 123",
|
"<_named_param> 123",
|
||||||
"",
|
"",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
|
const browserDirectInitialParameterValues = opfsParameterValueSet("10.5", "20.25", "2.25", "44");
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"restore_parameters_direct",
|
"restore_parameters_direct",
|
||||||
interp.restoreParameters(browserParameterFilePath),
|
interp.restoreParameters(browserParameterFilePath),
|
||||||
[
|
opfsParameterResultLinesForValues("restore", browserDirectInitialParameterValues).join("\n"),
|
||||||
"restore_parameters=0",
|
);
|
||||||
"parameter_5161=10.5",
|
const browserDirectParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6);
|
||||||
"parameter_5162=20.25",
|
const browserDirectParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6");
|
||||||
"parameter_5221=2.25",
|
const browserDirectParameterReadbackValues = opfsParameterValueSet(
|
||||||
"parameter_5399=44",
|
"12.340000",
|
||||||
].join("\n"),
|
"56.780000",
|
||||||
|
"9.870000",
|
||||||
|
"66.600000",
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"save_parameters_direct",
|
"save_parameters_direct",
|
||||||
interp.saveParameters(browserParameterFilePath, {
|
interp.saveParameters(
|
||||||
5161: 12.34,
|
browserParameterFilePath,
|
||||||
5162: 56.78,
|
opfsParameterValuesForValueSet(browserDirectParameterValues),
|
||||||
5220: 1.0,
|
),
|
||||||
5221: 9.87,
|
opfsParameterResultLinesForValues("save", browserDirectParameterExpectedValues).join("\n"),
|
||||||
5399: 66.6,
|
|
||||||
}),
|
|
||||||
[
|
|
||||||
"save_parameters=0",
|
|
||||||
"parameter_5161=12.34",
|
|
||||||
"parameter_5162=56.78",
|
|
||||||
"parameter_5221=9.87",
|
|
||||||
"parameter_5399=66.6",
|
|
||||||
].join("\n"),
|
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
verifyExpectedOutput(
|
||||||
"saved_parameters_direct_text",
|
"saved_parameters_direct_text",
|
||||||
interp.readTextFile(browserParameterFilePath),
|
interp.readTextFile(browserParameterFilePath),
|
||||||
[
|
[
|
||||||
"5161\t12.340000",
|
...opfsParameterTextLinesForValues("\t", browserDirectParameterReadbackValues),
|
||||||
"5162\t56.780000",
|
|
||||||
"5221\t9.870000",
|
|
||||||
"5399\t66.600000",
|
|
||||||
"absent=<_named_param>",
|
"absent=<_named_param>",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
@@ -9221,29 +9347,26 @@
|
|||||||
"saved_parameters_direct_backup",
|
"saved_parameters_direct_backup",
|
||||||
interp.readTextFile(`${browserParameterFilePath}.bak`),
|
interp.readTextFile(`${browserParameterFilePath}.bak`),
|
||||||
[
|
[
|
||||||
"5161 10.5",
|
...opfsParameterTextLinesForValues(" ", browserDirectInitialParameterValues),
|
||||||
"5162 20.25",
|
|
||||||
"5221 2.25",
|
|
||||||
"5399 44",
|
|
||||||
"<_named_param> 123",
|
"<_named_param> 123",
|
||||||
].join("\n"),
|
].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(
|
const browserToolTablePath = writeGeneratedToolTableFixture(
|
||||||
interp,
|
interp,
|
||||||
"/work/browser-direct-tool.tbl",
|
"/work/browser-direct-tool.tbl",
|
||||||
[
|
browserDirectToolTableInputLines.join("\n"),
|
||||||
"T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser direct finish tool",
|
|
||||||
"T5 P9 X1 Y2 Z3 ;browser direct rough tool",
|
|
||||||
"",
|
|
||||||
].join("\n"),
|
|
||||||
);
|
);
|
||||||
verifyExpectedOutput(
|
const browserDirectFinishTool = {
|
||||||
"load_tool_table_direct",
|
toolNo: "2",
|
||||||
interp.loadToolTable(browserToolTablePath),
|
pocketNo: "7",
|
||||||
[
|
comment: ";browser direct finish tool",
|
||||||
"tooldata_load=0",
|
resultLines: [
|
||||||
"tooldata_last_index=2",
|
|
||||||
"tool_1.toolno=2",
|
"tool_1.toolno=2",
|
||||||
"tool_1.pocketno=7",
|
"tool_1.pocketno=7",
|
||||||
"tool_1.z=3.125",
|
"tool_1.z=3.125",
|
||||||
@@ -9252,47 +9375,57 @@
|
|||||||
"tool_1.backangle=34",
|
"tool_1.backangle=34",
|
||||||
"tool_1.orientation=4",
|
"tool_1.orientation=4",
|
||||||
"tool_1.comment=browser direct finish tool",
|
"tool_1.comment=browser direct finish tool",
|
||||||
"tool_2.toolno=5",
|
],
|
||||||
"tool_2.pocketno=9",
|
extraTextLines: [
|
||||||
"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",
|
|
||||||
"Z+3.125000",
|
"Z+3.125000",
|
||||||
"D+1.500000",
|
"D+1.500000",
|
||||||
"I+12.000000",
|
"I+12.000000",
|
||||||
"J+34.000000",
|
"J+34.000000",
|
||||||
"Q4",
|
"Q4",
|
||||||
";browser direct finish tool",
|
],
|
||||||
"T5",
|
};
|
||||||
"P9",
|
const browserDirectRoughTool = {
|
||||||
";browser direct rough tool",
|
toolNo: "5",
|
||||||
].join("\n"),
|
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(
|
const browserRandomToolTablePath = writeGeneratedToolTableFixture(
|
||||||
interp,
|
interp,
|
||||||
"/work/browser-direct-random-tool.tbl",
|
"/work/browser-direct-random-tool.tbl",
|
||||||
[
|
browserDirectRandomToolTableInputLines.join("\n"),
|
||||||
"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"),
|
|
||||||
);
|
);
|
||||||
const browserDirectRandomFinishTool = {
|
const browserDirectRandomFinishTool = {
|
||||||
toolNo: "2",
|
toolNo: "2",
|
||||||
@@ -9345,10 +9478,11 @@
|
|||||||
|
|
||||||
const browserInterpMachineId = "browser-interp";
|
const browserInterpMachineId = "browser-interp";
|
||||||
const browserInterpWasmPaths = opfsBrowserSessionWasmPaths("browser");
|
const browserInterpWasmPaths = opfsBrowserSessionWasmPaths("browser");
|
||||||
const browserInterpInitialParameterValues = ["10.5", "20.25", "2.25", "44"];
|
const browserInterpInitialParameterValues = opfsParameterValueSet("10.5", "20.25", "2.25", "44");
|
||||||
|
const browserInterpToolTableInputText = "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n";
|
||||||
const browserInterpTextPaths = await saveMachineTextFiles(browserInterpMachineId, {
|
const browserInterpTextPaths = await saveMachineTextFiles(browserInterpMachineId, {
|
||||||
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
|
ini: `[EMC]\nMACHINE = ${browserInterpMachineId}\n`,
|
||||||
toolTable: "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;browser finish tool\n",
|
toolTable: browserInterpToolTableInputText,
|
||||||
parameters: browserDirectParameterSeedLines(true).join("\n"),
|
parameters: browserDirectParameterSeedLines(true).join("\n"),
|
||||||
});
|
});
|
||||||
assertMachineTextStorePaths(
|
assertMachineTextStorePaths(
|
||||||
@@ -9372,36 +9506,43 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_restore_parameters",
|
"opfs_restore_parameters",
|
||||||
loadedSession.parameters,
|
loadedSession.parameters,
|
||||||
opfsParameterResultLines("restore", ...browserInterpInitialParameterValues),
|
opfsParameterResultLinesForValues("restore", browserInterpInitialParameterValues),
|
||||||
);
|
);
|
||||||
const browserInterpToolTableValues = ["2", "7", "3.125", "1.5", "browser finish tool"];
|
const browserInterpToolTable = opfsToolTableToolValues(
|
||||||
const browserInterpToolTableReadbackValues = [
|
|
||||||
"2",
|
"2",
|
||||||
"7",
|
"7",
|
||||||
|
"3.125",
|
||||||
|
"1.5",
|
||||||
|
";browser finish tool",
|
||||||
|
"browser finish tool",
|
||||||
"+3.125000",
|
"+3.125000",
|
||||||
"+1.500000",
|
"+1.500000",
|
||||||
";browser finish tool",
|
);
|
||||||
];
|
|
||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_tool_table",
|
"opfs_load_tool_table",
|
||||||
loadedSession.toolTable,
|
loadedSession.toolTable,
|
||||||
opfsToolTableResultLines("load", browserInterpToolTableValues[0], browserInterpToolTableValues[1], [
|
opfsToolTableResultLinesForTool("load", browserInterpToolTable, [
|
||||||
`tool_1.z=${browserInterpToolTableValues[2]}`,
|
`tool_1.z=${browserInterpToolTable.zOffset}`,
|
||||||
`tool_1.diameter=${browserInterpToolTableValues[3]}`,
|
`tool_1.diameter=${browserInterpToolTable.diameter}`,
|
||||||
"tool_1.frontangle=12",
|
"tool_1.frontangle=12",
|
||||||
"tool_1.backangle=34",
|
"tool_1.backangle=34",
|
||||||
"tool_1.orientation=4",
|
"tool_1.orientation=4",
|
||||||
`tool_1.comment=${browserInterpToolTableValues[4]}`,
|
`tool_1.comment=${browserInterpToolTable.loadComment}`,
|
||||||
"tool_index_for_tool_2=1",
|
"tool_index_for_tool_2=1",
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
const browserInterpParameterValues = [12.34, 56.78, 9.87, 66.6];
|
const browserInterpParameterValues = opfsParameterValueSet(12.34, 56.78, 9.87, 66.6);
|
||||||
const browserInterpParameterExpectedValues = ["12.34", "56.78", "9.87", "66.6"];
|
const browserInterpParameterExpectedValues = opfsParameterValueSet("12.34", "56.78", "9.87", "66.6");
|
||||||
const browserInterpParameterReadbackValues = ["12.340000", "56.780000", "9.870000", "66.600000"];
|
const browserInterpParameterReadbackValues = opfsParameterValueSet(
|
||||||
|
"12.340000",
|
||||||
|
"56.780000",
|
||||||
|
"9.870000",
|
||||||
|
"66.600000",
|
||||||
|
);
|
||||||
const savedParameters = await saveMachineParametersToOpfs(
|
const savedParameters = await saveMachineParametersToOpfs(
|
||||||
interp,
|
interp,
|
||||||
browserInterpMachineId,
|
browserInterpMachineId,
|
||||||
opfsParameterValues(...browserInterpParameterValues),
|
opfsParameterValuesForValueSet(browserInterpParameterValues),
|
||||||
{ wasmPath: browserInterpWasmPaths.parameters },
|
{ wasmPath: browserInterpWasmPaths.parameters },
|
||||||
);
|
);
|
||||||
assertOpfsSavedParameterStaging(
|
assertOpfsSavedParameterStaging(
|
||||||
@@ -9414,14 +9555,14 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_parameters",
|
"opfs_save_parameters",
|
||||||
savedParameters,
|
savedParameters,
|
||||||
opfsParameterResultLines("save", ...browserInterpParameterExpectedValues),
|
opfsParameterResultLinesForValues("save", browserInterpParameterExpectedValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsMachineFileReadback(
|
await verifyOpfsMachineFileReadback(
|
||||||
"opfs_saved_parameter_text",
|
"opfs_saved_parameter_text",
|
||||||
browserInterpMachineId,
|
browserInterpMachineId,
|
||||||
"parameters",
|
"parameters",
|
||||||
[
|
[
|
||||||
...opfsParameterTextLines("\t", ...browserInterpParameterReadbackValues),
|
...opfsParameterTextLinesForValues("\t", browserInterpParameterReadbackValues),
|
||||||
"absent=<_named_param>",
|
"absent=<_named_param>",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -9429,7 +9570,7 @@
|
|||||||
"opfs_saved_parameter_backup_text",
|
"opfs_saved_parameter_backup_text",
|
||||||
savedParameters.backupOpfsPath,
|
savedParameters.backupOpfsPath,
|
||||||
[
|
[
|
||||||
...opfsParameterTextLines(" ", ...browserInterpInitialParameterValues),
|
...opfsParameterTextLinesForValues(" ", browserInterpInitialParameterValues),
|
||||||
"<_named_param> 123",
|
"<_named_param> 123",
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -9448,16 +9589,13 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_tool_table",
|
"opfs_save_tool_table",
|
||||||
savedToolTable,
|
savedToolTable,
|
||||||
opfsToolTableResultLines("save", browserInterpToolTableValues[0], browserInterpToolTableValues[1]),
|
opfsToolTableResultLinesForTool("save", browserInterpToolTable),
|
||||||
);
|
);
|
||||||
await verifyOpfsMachineFileReadback(
|
await verifyOpfsMachineFileReadback(
|
||||||
"opfs_saved_tool_table_text",
|
"opfs_saved_tool_table_text",
|
||||||
browserInterpMachineId,
|
browserInterpMachineId,
|
||||||
"toolTable",
|
"toolTable",
|
||||||
opfsToolTableTextLines(
|
opfsToolTableTextLinesForTool(browserInterpToolTable, ["I+12.000000", "J+34.000000", "Q4"]),
|
||||||
...browserInterpToolTableReadbackValues,
|
|
||||||
["I+12.000000", "J+34.000000", "Q4"],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const browserRandomMachineId = "browser-random-toolchanger";
|
const browserRandomMachineId = "browser-random-toolchanger";
|
||||||
@@ -9487,6 +9625,11 @@
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
const browserRandomTools = [browserRandomFinishTool, browserRandomRoughTool];
|
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, {
|
const browserRandomTextPaths = await saveMachineTextFiles(browserRandomMachineId, {
|
||||||
ini: [
|
ini: [
|
||||||
"[EMC]",
|
"[EMC]",
|
||||||
@@ -9496,11 +9639,7 @@
|
|||||||
"RANDOM_TOOLCHANGER = yes",
|
"RANDOM_TOOLCHANGER = yes",
|
||||||
"",
|
"",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
toolTable: [
|
toolTable: 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"),
|
|
||||||
parameters: browserDirectParameterSeedLines().join("\n"),
|
parameters: browserDirectParameterSeedLines().join("\n"),
|
||||||
});
|
});
|
||||||
assertMachineTextStorePaths(
|
assertMachineTextStorePaths(
|
||||||
@@ -9575,19 +9714,26 @@
|
|||||||
browserIniFileTextPaths,
|
browserIniFileTextPaths,
|
||||||
iniFileMachineId,
|
iniFileMachineId,
|
||||||
);
|
);
|
||||||
const iniNamedInitialParameterValues = ["31.25", "62.5", "4.5", "99"];
|
const iniNamedInitialParameterValues = opfsParameterValueSet("31.25", "62.5", "4.5", "99");
|
||||||
await writeOpfsMachineFile(
|
await writeOpfsMachineFile(
|
||||||
iniFileMachineId,
|
iniFileMachineId,
|
||||||
iniFileParameterFilename,
|
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(
|
await writeOpfsMachineFile(
|
||||||
iniFileMachineId,
|
iniFileMachineId,
|
||||||
iniFileToolTableFilename,
|
iniFileToolTableFilename,
|
||||||
opfsToolTableSeedText(...iniNamedToolTableValues),
|
opfsToolTableSeedTextForTool(iniNamedToolTable),
|
||||||
);
|
);
|
||||||
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
const loadedIniFileSession = await loadMachineSessionFromOpfs(
|
||||||
interp,
|
interp,
|
||||||
@@ -9615,15 +9761,20 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_ini_named_parameter_file",
|
"opfs_load_ini_named_parameter_file",
|
||||||
loadedIniFileSession.parameters,
|
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(
|
const savedIniNamedParameters = await saveMachineParametersToOpfs(
|
||||||
interp,
|
interp,
|
||||||
iniFileMachineId,
|
iniFileMachineId,
|
||||||
opfsParameterValues(...iniNamedParameterValues),
|
opfsParameterValuesForValueSet(iniNamedParameterValues),
|
||||||
opfsLoadedFileSaveOptions(loadedIniFileSession.parameters),
|
opfsLoadedFileSaveOptions(loadedIniFileSession.parameters),
|
||||||
);
|
);
|
||||||
assertOpfsSavedParameterStaging(
|
assertOpfsSavedParameterStaging(
|
||||||
@@ -9636,25 +9787,25 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_ini_named_parameter_file",
|
"opfs_save_ini_named_parameter_file",
|
||||||
savedIniNamedParameters,
|
savedIniNamedParameters,
|
||||||
opfsParameterResultLines("save", ...iniNamedParameterExpectedValues),
|
opfsParameterResultLinesForValues("save", iniNamedParameterExpectedValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_ini_named_parameter_text",
|
"opfs_saved_ini_named_parameter_text",
|
||||||
loadedIniFileSession.parameters.opfsPath,
|
loadedIniFileSession.parameters.opfsPath,
|
||||||
opfsParameterTextLines("\t", ...iniNamedParameterReadbackValues),
|
opfsParameterTextLinesForValues("\t", iniNamedParameterReadbackValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_ini_named_parameter_backup_text",
|
"opfs_saved_ini_named_parameter_backup_text",
|
||||||
savedIniNamedParameters.backupOpfsPath,
|
savedIniNamedParameters.backupOpfsPath,
|
||||||
opfsParameterTextLines(" ", ...iniNamedInitialParameterValues),
|
opfsParameterTextLinesForValues(" ", iniNamedInitialParameterValues),
|
||||||
);
|
);
|
||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_ini_named_tool_table",
|
"opfs_load_ini_named_tool_table",
|
||||||
loadedIniFileSession.toolTable,
|
loadedIniFileSession.toolTable,
|
||||||
opfsToolTableResultLines("load", iniNamedToolTableLoadValues[0], iniNamedToolTableLoadValues[1], [
|
opfsToolTableResultLinesForTool("load", iniNamedToolTable, [
|
||||||
`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(
|
||||||
@@ -9672,12 +9823,12 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_ini_named_tool_table",
|
"opfs_save_ini_named_tool_table",
|
||||||
savedIniNamedToolTable,
|
savedIniNamedToolTable,
|
||||||
opfsToolTableResultLines("save", iniNamedToolTableValues[0], iniNamedToolTableValues[1]),
|
opfsToolTableResultLinesForTool("save", iniNamedToolTable),
|
||||||
);
|
);
|
||||||
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),
|
opfsToolTableTextLinesForTool(iniNamedToolTable),
|
||||||
);
|
);
|
||||||
|
|
||||||
const iniOverrideMachineId = "browser-ini-override-session";
|
const iniOverrideMachineId = "browser-ini-override-session";
|
||||||
@@ -9699,19 +9850,26 @@
|
|||||||
browserIniOverrideTextPaths,
|
browserIniOverrideTextPaths,
|
||||||
iniOverrideMachineId,
|
iniOverrideMachineId,
|
||||||
);
|
);
|
||||||
const explicitInitialParameterValues = ["41.25", "82.5", "6.5", "101"];
|
const explicitInitialParameterValues = opfsParameterValueSet("41.25", "82.5", "6.5", "101");
|
||||||
await writeOpfsMachineFile(
|
await writeOpfsMachineFile(
|
||||||
iniOverrideMachineId,
|
iniOverrideMachineId,
|
||||||
explicitParameterFilename,
|
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(
|
await writeOpfsMachineFile(
|
||||||
iniOverrideMachineId,
|
iniOverrideMachineId,
|
||||||
explicitToolTableFilename,
|
explicitToolTableFilename,
|
||||||
opfsToolTableSeedText(...explicitToolTableValues),
|
opfsToolTableSeedTextForTool(explicitToolTable),
|
||||||
);
|
);
|
||||||
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
const loadedIniOverrideSession = await loadMachineSessionFromOpfs(
|
||||||
interp,
|
interp,
|
||||||
@@ -9743,24 +9901,29 @@
|
|||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_explicit_parameter_file",
|
"opfs_load_explicit_parameter_file",
|
||||||
loadedIniOverrideSession.parameters,
|
loadedIniOverrideSession.parameters,
|
||||||
opfsParameterResultLines("restore", ...explicitInitialParameterValues),
|
opfsParameterResultLinesForValues("restore", explicitInitialParameterValues),
|
||||||
);
|
);
|
||||||
verifyOpfsLoadResult(
|
verifyOpfsLoadResult(
|
||||||
"opfs_load_explicit_tool_table",
|
"opfs_load_explicit_tool_table",
|
||||||
loadedIniOverrideSession.toolTable,
|
loadedIniOverrideSession.toolTable,
|
||||||
opfsToolTableResultLines("load", explicitToolTableLoadValues[0], explicitToolTableLoadValues[1], [
|
opfsToolTableResultLinesForTool("load", explicitToolTable, [
|
||||||
`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 = opfsParameterValueSet(51.25, 102.5, 7.5, 202);
|
||||||
const explicitParameterExpectedValues = ["51.25", "102.5", "7.5", "202"];
|
const explicitParameterExpectedValues = opfsParameterValueSet("51.25", "102.5", "7.5", "202");
|
||||||
const explicitParameterReadbackValues = ["51.250000", "102.500000", "7.500000", "202.000000"];
|
const explicitParameterReadbackValues = opfsParameterValueSet(
|
||||||
|
"51.250000",
|
||||||
|
"102.500000",
|
||||||
|
"7.500000",
|
||||||
|
"202.000000",
|
||||||
|
);
|
||||||
const savedExplicitParameters = await saveMachineParametersToOpfs(
|
const savedExplicitParameters = await saveMachineParametersToOpfs(
|
||||||
interp,
|
interp,
|
||||||
iniOverrideMachineId,
|
iniOverrideMachineId,
|
||||||
opfsParameterValues(...explicitParameterValues),
|
opfsParameterValuesForValueSet(explicitParameterValues),
|
||||||
opfsLoadedFileSaveOptions(loadedIniOverrideSession.parameters),
|
opfsLoadedFileSaveOptions(loadedIniOverrideSession.parameters),
|
||||||
);
|
);
|
||||||
assertOpfsSavedParameterStaging(
|
assertOpfsSavedParameterStaging(
|
||||||
@@ -9773,17 +9936,17 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_explicit_parameter_file",
|
"opfs_save_explicit_parameter_file",
|
||||||
savedExplicitParameters,
|
savedExplicitParameters,
|
||||||
opfsParameterResultLines("save", ...explicitParameterExpectedValues),
|
opfsParameterResultLinesForValues("save", explicitParameterExpectedValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_explicit_parameter_text",
|
"opfs_saved_explicit_parameter_text",
|
||||||
loadedIniOverrideSession.parameters.opfsPath,
|
loadedIniOverrideSession.parameters.opfsPath,
|
||||||
opfsParameterTextLines("\t", ...explicitParameterReadbackValues),
|
opfsParameterTextLinesForValues("\t", explicitParameterReadbackValues),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_explicit_parameter_backup_text",
|
"opfs_saved_explicit_parameter_backup_text",
|
||||||
savedExplicitParameters.backupOpfsPath,
|
savedExplicitParameters.backupOpfsPath,
|
||||||
opfsParameterTextLines(" ", ...explicitInitialParameterValues),
|
opfsParameterTextLinesForValues(" ", explicitInitialParameterValues),
|
||||||
);
|
);
|
||||||
const savedExplicitToolTable = await saveMachineToolTableToOpfs(
|
const savedExplicitToolTable = await saveMachineToolTableToOpfs(
|
||||||
interp,
|
interp,
|
||||||
@@ -9800,12 +9963,12 @@
|
|||||||
verifyOpfsSaveResult(
|
verifyOpfsSaveResult(
|
||||||
"opfs_save_explicit_tool_table",
|
"opfs_save_explicit_tool_table",
|
||||||
savedExplicitToolTable,
|
savedExplicitToolTable,
|
||||||
opfsToolTableResultLines("save", explicitToolTableValues[0], explicitToolTableValues[1]),
|
opfsToolTableResultLinesForTool("save", explicitToolTable),
|
||||||
);
|
);
|
||||||
await verifyOpfsReadback(
|
await verifyOpfsReadback(
|
||||||
"opfs_saved_explicit_tool_table_text",
|
"opfs_saved_explicit_tool_table_text",
|
||||||
loadedIniOverrideSession.toolTable.opfsPath,
|
loadedIniOverrideSession.toolTable.opfsPath,
|
||||||
opfsToolTableTextLines(...explicitToolTableReadbackValues),
|
opfsToolTableTextLinesForTool(explicitToolTable),
|
||||||
);
|
);
|
||||||
|
|
||||||
await verifyOpfsInvalidIniSessionRejects(
|
await verifyOpfsInvalidIniSessionRejects(
|
||||||
|
|||||||
Reference in New Issue
Block a user