Files
linuxcncWebWASM/docs/linuxcnc-web-wasm-source-test-execution-plan.md

46 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LinuxCNC 源测试对标执行计划
本计划只服务于 LinuxCNC 仿真功能对标。LinuxCNC 源程序测试工具是行为来源,WASM/native/Worker 适配器必须保留原测试输入、期望输出、错误语义和资源依赖;不能把自建 smoke test 当作源测试替代品。
## 对标对象
- `linuxcnc/scripts/runtests`:递归发现 `test.hal`、`test.sh`、`test`,执行 `halrun`/shell/executable,并按 `expected` 或 `checkresult` 判定。
- `linuxcnc/tests/**`:HAL regression/functional、interp、remap、IO、motion、tool、startup、经典梯形图、限位和配置测试。
- `linuxcnc/unit_tests/interp`:`test_interp` C++ 单元测试目标。
- `linuxcnc/unit_tests/tp`:`test_blendmath` TP 单元测试目标。
- `linuxcnc/configs/sim/**`:INI/HAL/程序/Python/VCP/CLP 启动闭包和用户工作流入口。
## 适配分类
1. `PURE_REGRESSION`:只依赖 `halrun`/解释器/TP/固定 tick,保留 stdout 与 `expected` 字节对照。
2. `PURE_FUNCTIONAL`:使用 `checkresult`,将检查输入和结果映射成稳定 JSON 状态。
3. `WORKER_SIM_ADAPTER`:需要真实 Worker session、配置启动或数字孪生;输入保持源文件原样。
4. `UNIT_NATIVE_WASM`:unit_tests C/C++ 目标建立 native 与 WASM 双 runner。
5. `HOST_EXCLUDED`:sudo、TCP、真实设备、内核实时、动态模块、GUI/窗口或任意宿主路径;只记录稳定排除原因,不伪造通过。
6. `SOURCE_BLOCKED`:源输入、expected、checkresult 或依赖缺失;保留 source_id 和诊断。
## 执行阶段
| 阶段 | 任务 | 产物 |
|---|---|---|
| S5-01 | 发现并分类源测试,复制 runtests 判定语义 | source-test matrix/report |
| S5-02 | 执行无宿主依赖的 runtests 纯仿真子集 | native/WASM/Worker JSONL diff |
| S5-03 | 迁移 `unit_tests/interp` 与 `unit_tests/tp` | CTest/WASM golden diff |
| S5-04 | 迁移 `tests/interp/**`、remap、O-word、filter | block/error/canonical diff |
| S5-05 | 迁移 HAL regression/functional 和 `.comp` | pin/signal/thread/output diff |
| S5-06 | 迁移 IO/startup/tool/limit/ClassicLadder | device/task/recovery diff |
| S5-07 | 批量执行 `configs/sim/**` 启动和工作流 | 233 entrypoint READY/BLOCKED/diff matrix |
| S5-08 | 汇总差异、重复执行和恢复终点 | full source-test parity report |
## 每个测试的证据
每个 source test 必须记录:`source_id`、路径、来源 hash、runner 命令、输入 fixture hash、expected/checkresult hash、适配分类、状态、stdout/stderr hash、首个差异字段/行、逻辑 tick、state/event hash、失败原因和下一步任务。宿主排除不计入通过率;缺失输入不降级为通过。
## 通过条件
- 源测试发现数与锁定 source index 一致,无孤儿、重复或静默跳过。
- `expected` 测试逐字节一致;`checkresult` 测试使用同一判定条件并输出结构化差异。
- native/WASM/Worker 使用同一输入和命令序列,首个差异可定位到 tick/字段/单位/错误列。
- 1x、fast、single-step、recover 的源测试终点 hash 一致。
- `HOST_EXCLUDED`、`SOURCE_BLOCKED` 独立统计,不伪造为 `PASSED`。