testing-hashql
HashQL 測試指南:包含 compiletest (UI 測試)、單元測試與 insta 快照測試。適用於編寫測試、使用 //~ 註解、執行 --bless、偵錯以及選擇正確的測試策略。
簡介
testing-hashql 技能為 HashQL 生態系統中的編譯器行為、邏輯與輸出驗證提供了完整的框架。它引導開發人員根據正在開發的組件(無論是編譯器基礎架構、內部核心邏輯還是解析器片段)選擇適當的測試方法。此技能有助於確保程式碼變更在 HashQL 引擎的各個層級中保持診斷完整性與效能基準。
-
多模式測試方法:compiletest(診斷預設值)、標準 Rust 單元測試以及 insta 快照測試。
-
UI 測試管理:關於處理診斷註解(//
, //^, //~|)、規格檔案與輸出驗證的詳細文件。 -
自動化維護:執行測試套件、依名稱篩選以及執行 --bless 以更新預期快照與診斷資訊的指令。
-
目標測試環境:支援 MIR/HIR/AST 管線階段、核心 crate 測試以及特定 syntax-jexpr 解析器片段的驗證。
-
隔離開發:關於使用 MIR builder 巨集以程式化建構轉換流程測試案例的指南。
-
針對位於 tests/ui/ 的編譯器管線階段、錯誤報告與診斷訊息,請使用 compiletest。
-
對於 MIR/HIR/AST 處理過程中的邊緣案例,或當 compiletest 在結構上不可行時,請使用 insta 快照;並儘可能將其與 UI 測試放置在同一位置。
-
利用 #[cfg(test)] 模組來編寫內部邏輯與輔助函式,並透過 cargo nextest 或標準 cargo test 執行測試。
-
對於 MIR 轉換,請運用 body! 巨集來測試邏輯;請注意,不支援的結構應回報建議,而非手動處理。
-
請記住,compiletest 是編譯器測試的預設首選;僅在特定需求或 crate 邊界要求時,才改用 insta 或單元測試。
-
保持測試檔案按類別組織,確保測試環境能妥善處理規格與輔助輸出(如 .svg 檔案或 .jsonc 輸入)。
倉庫統計
- Star 數
- 1,533
- Fork 數
- 118
- Open Issue 數
- 70
- 主要語言
- Rust
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 上午03:26