測試
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-diff
或just ued
用於更新 esbuild 測試套件中的差異
Rust 測試
Rust 測試案例儲存在以下位置:
/crates/rolldown/tests/esbuild
/crates/rolldown/tests/fixtures
測試案例定義方式
測試案例是一個包含 _config.json
的資料夾。
_config.json
包含測試套件的設定檔。如果一切都正常運作,您應該可以在編輯 _config.json
時使用自動完成功能,原因是 config。
對於所有可用的選項,您可以參閱
https://github.com/rolldown/rolldown/blob/main/crates/rolldown_testing_config/src/lib.rs
https://github.com/rolldown/rolldown/blob/main/crates/rolldown_testing/_config.schema.json
main.js
是測試案例的預設輸入,如果config.input
未指定在_config.json
中。Rolldown 將把輸入捆綁到
/dist
中,並依序執行/dist
中的每個輸入檔。您可以將它視為執行node --import ./dist/entry1.mjs --import ./dist/entry2.mjs --import ./dist/entry3.mjs --eval ""
。- 如果在測試案例資料夾中有一個
_test.mjs
/_test.cjs
,只會執行_test.mjs
/_test.cjs
。如果您想要執行已編譯的輸入,您需要在_test.mjs
/_test.cjs
中手動匯入它們。
- 如果在測試案例資料夾中有一個
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
會執行測試並更新快照。
執行特定檔案的測試
若要執行特定檔案的測試,您可以使用
just test-node rolldown test-file-name
例如,若要執行 fixture.test.ts
中的測試,您可以使用 just test-node rolldown fixture
。
執行特定測試
若要執行特定測試,您可以使用
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 bbb
與just test-node rolldown -t "aaa bbb"
不同。前者會執行包含aaa
或bbb
的測試,而後者會執行其名稱包含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
會執行並更新測試狀態。