测试
摘要
运行 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-namefixture.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将运行并更新测试状态。