本月测试基础设施更新:2024 年 10 月
本文快速总结了 rust-lang/rust 仓库1 测试基础设施在 2024 年 10 月2 的变化。文中也简要介绍了正在进行的工作。
一如既往,如果您在使用我们的测试基础设施时遇到 bug 或用户体验问题,请提交 issue。如果我们不知道 bug 和小问题,就无法修复它们!
感谢所有为我们的测试基础设施做出贡献的人!
亮点
compiletest
现在支持使用自定义 diff 工具
compiletest
(和 bootstrap)现在支持使用自定义 diff 工具 (#131181).
这仅影响可视化 diff 的生成(例如,您可能喜欢不同的视觉风格)。`.stderr` 快照等不受影响。
如果您想使用您喜欢的 diff 工具生成可视化 diff,可以修改 config.toml
的 build.compiletest-diff-tool
选项
[]
# What custom diff tool to use for displaying compiletest tests.
#compiletest-diff-tool = <none>
感谢 @dev-ardi
的实现!
minicore
测试辅助模块和 //@ add-core-stubs
指令
ui
、assembly
和 codegen
测试现在可以使用 //@ add-core-stubs
指令有条件地构建一个提供 core
存根的 minicore
测试辅助模块 (#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
extern crate minicore;
use *;
;
// `Copy` is provided by `minicore`!
有关原始动机的更多信息,请参阅上下文 issue、MCP 和跟踪 issue。有关使用示例,请参阅rustc-dev-guide 章节。
PR 列表
改进
- 通用测试基础设施:添加
minicore
测试辅助模块并支持ui
/assembly
/codegen
测试中的//@ add-core-stubs
指令 #130693 - compiletest:添加测试基础设施以显式测试禁用
autodiff
/enzyme
的 rustc #131470 - compiletest:针对检查构建失败的
build-fail
测试的特殊错误消息处理 #131642 - compiletest:文档化 compiletest 的 lib.rs 的各个部分 #131679
- compiletest:修复 run-make 测试输出目录中不必要的嵌套 #131764
- compiletest:当使用修订时对冗余的
--cfg
指令发出警告 #131925 - compiletest:区分 html-tidy 和 rust tidy 工具 #131941
- compiletest:自定义差分工具 #131181
- compiletest:不允许测试修订与内置
cfg
s 冲突 #131930 - compiletest:动态链接 run-make 支持 #132225
- compiletest:提高 LLVM 版本处理的健壮性 #132315
- compiletest:添加“reference”作为已知的 compiletest 头 #1313824
tests/run-make
, CI:添加aarch64-gnu-debug
作业 #131207- 元:为影响 compiletest 的 PR 标记 A-compiletest #131682
修复
- compiletest:修复 run-make 测试的最新检查 #131681
- compiletest:抑制 run-make 测试的 Windows 错误报告 (WER)5
- compiletest:在使用修订的 run-make 测试中报错 #131614
tests/run-make
, CI:在x86_64-gnu-debug
中运行完整的 stage 2run-make
测试套件 #131917- bootstrap,
tests/run-make
:当 CI rustc 可用时,不要回退到以前的编译器 #132006 - bootstrap,
tests/mir-opt
:为mir-opt
测试套件匹配主机和目标的 std RUSTFLAGS,以修复 std 重复构建/重新构建的问题 #131442 - emscripten:修复 bootstrap 和 compiletest 对 emscripten 目标测试的处理,作为 Fix most ui tests on emscripten target #131705 的一部分
清理
- compiletest:将辅助 crate 属性提取到其自己的模块/结构体中 #131541
- compiletest:将指令
needs-profiler-support
重命名为needs-profiler-runtime
#131429 - compiletest:将调试器设置代码移出 lib.rs #131638
- compiletest:移除检查指令 original_line 的一项功能 #131585
- compiletest:将测试收集上下文/状态存储在两个结构体中 #131870
- compiletest:整理如何区分 tidy 和 tidy(html 版本) #131961
- compiletest:使
line_directive
返回一个DirectiveLine
#132033 - compiletest:将
command-list.rs
重命名为directive-list.rs
#132313 - compiletest:移除使用
lto=thin
查找输出的神奇技巧 #131524 - compiletest:简化 assembly 测试的
--emit
模式选择 #131525 - compiletest:将调试器设置代码移出 lib.rs #131638
文档更新
- rustc-dev-guide:文档化 compiletest 指令
ignore-coverage-map
和ignore-coverage-run
#2094 - rustc-dev-guide:将
needs-profiler-support
重命名为needs-profiler-runtime
#2095 - rustc-dev-guide:修复并更新
needs-force-clang-based-tests
的文档 #2085 - rustc-dev-guide:添加集成测试和头的重定向 #2092
- rustc-dev-guide:描述 minicore 测试辅助模块和指令 #2097
- rustc-dev-guide:修复 minicore.rs 链接 #2122
- rustc-dev-guide:为
reference
compiletest 头添加链接 #2096
正在进行的工作
注意:当然还有更多自发的努力,这里更多的是我所知的“计划内”工作。