工程开发
testing-hashql avatar

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
在 GitHub 查看