用途:本技能用于指导 HashQL 的测试编写,涵盖三种测试方式,compiletest 是测试编译器行为的默认选择。
主要能力与场景:诊断/错误信息、编译器流水线阶段、MIR/HIR/AST pass 集成使用 compiletest,测试位于 tests/ui/;MIR/HIR/AST pass 边界情况、核心 crate 与解析器片段使用 insta 快照;MIR pass 单元测试使用 MIR builder;内部函数与逻辑使用标准 Rust #[test] 单元测试。
使用方式:compiletest 测试以 J-Expr 文件加诊断注解编写,命令如 cargo run -p hashql-compiletest run,可用 --filter "test(name)" 筛选,--bless 更新预期输出。文件开头指令包括 run: pass / run: fail / run: skip、description、name;注解用 //~、//~^、//~v、//~| 标注期望诊断。单元测试运行 cargo nextest run --package hashql-<package>,文档测试用 cargo test --package hashql-<package> --doc。快照测试依次可用 cargo insta test、cargo insta review、cargo insta accept。MIR builder 使用 body! 宏构造 MIR 函数体,快照含 Changed: Yes/No/Unknown。
限制:body! 宏不支持全部 MIR 构造,若缺少所需特性应停止并请求为宏添加该特性,而不是手动绕过。核心 crate 优先单元测试,仅在必要时使用快照。资料未提供各命令以外的安装或环境要求。