3.1 KiB
3.1 KiB
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_interpC++ 单元测试目标。linuxcnc/unit_tests/tp:test_blendmathTP 单元测试目标。linuxcnc/configs/sim/**:INI/HAL/程序/Python/VCP/CLP 启动闭包和用户工作流入口。
适配分类
PURE_REGRESSION:只依赖halrun/解释器/TP/固定 tick,保留 stdout 与expected字节对照。PURE_FUNCTIONAL:使用checkresult,将检查输入和结果映射成稳定 JSON 状态。WORKER_SIM_ADAPTER:需要真实 Worker session、配置启动或数字孪生;输入保持源文件原样。UNIT_NATIVE_WASM:unit_tests C/C++ 目标建立 native 与 WASM 双 runner。HOST_EXCLUDED:sudo、TCP、真实设备、内核实时、动态模块、GUI/窗口或任意宿主路径;只记录稳定排除原因,不伪造通过。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。