工程開發
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 查看