testing-hashql
HashQL 测试策略指南,涵盖 compiletest (UI 测试)、单元测试与 insta 快照测试。包含 --bless 指令、//~ 注解语法及各编译器组件的测试建议。
简介
testing-hashql 技能为 HashQL 组件提供了一套完整的验证框架,涵盖编译器流程、MIR/HIR/AST 传递与语法解析。对于在 Hash monorepo 中工作的工程师而言,这是确保代码品质与诊断报告可靠性的必备指南。通过将测试需求分类(从透过 compiletest 进行错误讯息验证,到使用标准 Rust 单元测试进行逻辑确认),此技能能协助开发者针对特定任务选择合适的测试工具。
-
完整支援 compiletest (UI 测试) 工作流程,包含诊断注解 (//
, //^, //~|)、测试档案结构要求,以及用于自动更新测试预期输出的 --bless 旗标。 -
提供 insta crate 的详细使用指引,用于 pipeline crates (mir, hir, ast)、核心模组与解析器片段的快照测试。
-
提供 MIR builder 测试的具体说明,利用 body! 巨集以程序化方式定义 MIR 结构,用于复杂转换传递的隔离与边缘案例验证。
-
整合标准化测试指令的说明,透过 cargo run -p hashql-compiletest 或 cargo nextest 进行高效执行。
-
提供解释测试结果的指南,例如处理 MIR 转换中的 Changed 枚举,以及透过 insta review 与 insta accept 管理快照审查。
-
默认优先选择 compiletest 处理所有编译器相关行为与诊断/错误讯息报告。
-
对于内部逻辑与辅助函数,请使用放置在 #[cfg(test)] 模组中的单元测试。
-
仅在 compiletest 不可行或针对特定解析器/核心组件时,才使用 insta 快照。
-
在 tests/ui/ 定义测试时,务必包含用于套件规范的 .spec.toml。
-
若 body! 巨集缺少所需的 MIR 结构,请勿手动绕过;应要求对巨集系统进行功能增强。
-
请务必将快照与对应的测试类别放置在一起,以维持储存库的整洁。
仓库统计
- Star 数
- 1,533
- Fork 数
- 118
- Open Issue 数
- 66
- 主要语言
- Rust
- 默认分支
- main
- 同步状态
- 空闲
- 最近同步时间
- 2026年4月29日 12:50