46 lines
3.1 KiB
Markdown
46 lines
3.1 KiB
Markdown
# 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`。
|