跳到內容

測試

TLDR

執行 just test-update 以執行所有測試和自動更新快照

我們有兩組測試套件:一組是 Rust,一組是 Node.js。

摘要

  • just test 用於執行所有測試。
  • just test-update 用於執行所有測試和自動更新快照
  • just test-rust 用於執行所有 Rust 測試。
  • just test-node 用於執行所有 Node.js 測試。
  • just test-node rolldown 用於只執行 Rolldown 的 Node.js 測試。
  • just test-node rollup 用於只執行 Rollup 的測試。
  • just update-esbuild-diffjust ued 用於更新 esbuild 測試套件中的差異

Rust 測試

Rust 測試案例儲存在以下位置:

  • /crates/rolldown/tests/esbuild
  • /crates/rolldown/tests/fixtures

測試案例定義方式

測試案例是一個包含 _config.json 的資料夾。

_config.json 包含測試套件的設定檔。如果一切都正常運作,您應該可以在編輯 _config.json 時使用自動完成功能,原因是 config

對於所有可用的選項,您可以參閱

rust 中的函式完整測試

_config.json 有其限制,因此我們也支援使用 rust 直接撰寫測試。您可以參閱

快照測試

Rolldown 使用 insta 進行 rust 快照測試。您可以使用

  • cargo insta review 來逐一檢閱新的快照。
  • cargo insta accept 一次性接受所有新的快照。

Node.js 測試

提示

在執行這些測試之前,請務必先 建置 Node.js 繫結元件

Node.js API 測試

位於 packages/rolldown/tests 的測試用於測試 Rolldown 的 Node.js API(例如,在 NPM 上發布的 rolldown 套件 API)。

我們的目標是盡可能讓 Rolldown 的 Node.js API 與 Rollup 的 API 保持一致,而測試用於驗證 API 的一致性並追蹤進度。目前,Rollup 有許多選項尚未支援。如果您已實作 Rollup 中其他選項的支援,請為它們新增相對應的測試案例。

  • just test-node rolldown 會執行 Rolldown 測試。
  • just test-node rolldown --update 會執行測試並更新快照。

執行特定檔案的測試

若要執行特定檔案的測試,您可以使用

shell
just test-node rolldown test-file-name

例如,若要執行 fixture.test.ts 中的測試,您可以使用 just test-node rolldown fixture

執行特定測試

若要執行特定測試,您可以使用

shell
just test-node rolldown -t test-name

fixture.test.ts 中測試的名稱已定義為其資料夾名稱。tests/fixtures/resolve/alias 的測試名稱將為 resolve/alias

若要執行 tests/fixtures/resolve/alias 測試,您可以使用 just test-node rolldown -t resolve/alias

說明

  • just test-node rolldown -t aaa bbbjust test-node rolldown -t "aaa bbb" 不同。前者會執行包含 aaabbb 的測試,而後者會執行其名稱包含 aaa bbb 的測試。

  • 若要進階使用,請參考 https://vitest.dev.org.tw/guide/filtering

Rollup 行為一致性測試

我們也透過對 Rolldown 執行 Rollup 自有的測試,來盡可能讓兩者的行為保持一致。

為達成這個目標,packages/rollup-tests/test 中的每個測試案例會代理至專案根目錄的 rollup git 子模組中對應的測試。

設定專案後,應已於執行 just init 之後將 git 子模組初始化。不過您也應該在執行 Rollup 測試之前,執行 just update 以更新子模組。

/packages/rollup-tests

  • just test-node rollup 會執行 Rollup 測試。
  • just test-node rollup --update 會執行並更新測試狀態。

根據 MIT 授權條款發布。