本月测试基础设施动态:2024 年 10 月

2024 年 11 月 4 日 · Jieyou Xu 代表 Bootstrap 团队

本月测试基础设施动态:2024 年 10 月

这是对 rust-lang/rust 仓库1 2024 年 10 月2 测试基础设施变更的快速总结。它还包括对正在进行的工作的简要描述。

与往常一样,如果您在使用我们的测试基础设施时遇到错误或用户体验问题,请提交一个 issue。如果我们不知道它们,错误和小的瑕疵就无法修复!

感谢所有为我们的测试基础设施做出贡献的人!

亮点

compiletest 现在支持自带自定义 diff 工具

compiletest(和 bootstrap)现在支持自带自定义 diff 工具 (#131181).

A ui test failure showing stderr snapshot diff produced by a custom differ

这只会影响视觉差异的生成(即,也许你喜欢不同的视觉风格)。.stderr 快照等不受影响。

如果你想使用你最喜欢的 diff 工具来生成视觉差异,你可以修改 config.tomlbuild.compiletest-diff-tool 选项。

[build]
# What custom diff tool to use for displaying compiletest tests.
#compiletest-diff-tool = <none>

感谢 @dev-ardi 的实现!

minicore 测试辅助和 //@ add-core-stubs 指令

ui, assemblycodegen 测试现在可以使用 //@ add-core-stubs 指令有条件地构建一个 minicore 测试辅助,该辅助提供 core 存根 (#130693)。这样做是为了我们可以在只需要为交叉编译目标构建的交叉编译测试之间共享 core 存根,并避免在每个这样的测试中重复发明和维护重复的 minicore 副本3

以前,每次你想添加一个不同的 ui/assembly/codegen 测试(例如,检查交叉编译 ABI)时,都必须重新发明一个 minicore,这是导致贡献者摩擦的一个重要来源,并且更容易在 minicore 副本中引入错误。对于想要引入新的 lang item 的编译器贡献者来说,这也特别烦人,因为他们发现自己不得不更新多个这样的 core 存根副本。

请注意,目前,共享的 tests/auxiliary/minicore.rs 测试辅助仍然非常少。计划是先落实测试基础设施,然后我们可以逐步向共享的测试辅助添加更多 core 存根。

用法示例

// tests/ui/abi/my-abi-test.rs

//@ add-core-stubs
//@ compile-flags: --target x86_64-pc-windows-msvc
//@ needs-llvm-components: x86

#![crate_type = "lib"]
#![feature(no_core)]
#![no_std]
#![no_core]

extern crate minicore;
use minicore::*;

struct Meow;
impl Copy for Meow {} // `Copy` is provided by `minicore`!

有关原始动机的更多信息,请参阅上下文 issueMCP跟踪 issue。有关用法示例,请参阅rustc-dev-guide 章节。

PR 列表

改进

修复

清理

文档更新

正在进行的工作

注意:肯定还有更多自发的工作,这更多的是我知道“计划中”的。

  1. 这里的测试基础设施指的是测试工具 compiletest 和我们的构建系统 bootstrap 中的支持组件。这个测试基础设施主要被 rustc 和 rustdoc 使用。其他工具,如 cargo、miri 或 rustfmt,维护它们自己的测试基础设施。

  2. 具体来说是 2024-10-09 到 2024-11-04。请注意,之前的问题错误地在文件名和 URL 中使用了 10 月,但实际上是 9 月的问题。

  3. 你可以说我们目前更像是一个...“多核”的情况,呵呵。

  4. 这是 T-spec 将测试与参考规则关联起来的工作的一部分。

  5. 如果您想查看 run-make 测试套件中未抑制的 Windows 错误报告是什么样子,请参阅 https://github.com/rust-lang/rust/issues/132092#issuecomment-2436615833