跳至内容

测试

摘要

运行 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 bbb 不同于 just test-node rolldown -t "aaa bbb"。前者将运行包含 aaabbb 的测试,而后者将运行名称包含 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 将运行并更新测试状态。

在 MIT 许可下发布。