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