工程開發
testing-hashql avatar

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