测试
摘要
运行 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
如果
config.input
未在_config.json
中指定,则main.js
是测试用例的默认入口。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.vite.ac.cn/guide/filtering。
Rollup 行为对齐测试
我们还希望通过针对 Rolldown 运行 Rollup 自身测试来实现行为对齐。
为实现此目的,packages/rollup-tests/test
中的每个测试用例都会代理到项目根目录中 rollup
git 子模块中的相应测试用例。
Git 子模块应在设置项目时运行 just init
后初始化,但您还应运行 just update
才能在运行 Rollup 测试之前更新子模块。
在 /packages/rollup-tests
中
just test-node rollup
将运行 Rollup 测试。just test-node rollup --update
将运行并更新测试状态。