mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 03:07:24 +03:00
3faf2826d0
Improve runtest revision redundant cfg check While attempting to ingest https://github.com/rust-lang/rust/pull/148034 via https://github.com/ferrocene/ferrocene/pull/2172 we noticed a test failure, as we add some `compile_flags` to tests. We saw a failure looking like this: ``` Testing stage1 with compiletest suite=mir-opt mode=mir-opt (x86_64-unknown-linux-gnu) running 2 tests 2026-02-20T20:21:28.846102Z ERROR compiletest::runtest: redundant cfg argument `copy` is already created by the revision [mir-opt] tests/mir-opt/pre-codegen/copy_and_clone.rs#COPY ... F . ``` While my Rust checkout passed: ``` Testing stage1 with compiletest suite=mir-opt mode=mir-opt (x86_64-unknown-linux-gnu) running 2 tests .. test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 381 filtered out; finished in 107.10ms ``` This caused me to add some debugging statements. Ferrocene: ``` 2026-02-20T21:05:39.808427Z ERROR compiletest::runtest: "copy": does ["--edition=2015", "--cfg=copy"] contain `"--cfg=copy"` or `["--cfg", "copy"]`? true 2026-02-20T21:05:39.808427Z ERROR compiletest::runtest: "clone": does ["--edition=2015"] contain `"--cfg=clone"` or `["--cfg", "clone"]`? false 2026-02-20T21:05:39.808435Z ERROR compiletest::runtest: redundant cfg argument `copy` is already created by the revision ``` Rust: ``` 2026-02-20T21:04:18.493158Z ERROR compiletest::runtest: "copy": does ["--cfg=copy"] contain `"--cfg=copy"` or `["--cfg", "copy"]`? false 2026-02-20T21:04:18.493158Z ERROR compiletest::runtest: "clone": does [] contain `"--cfg=clone"` or `["--cfg", "clone"]`? false ``` I noticed while reviewing the related functionality that there is a call to `.windows(2)` in the relevant check for redundant cfgs: https://github.com/rust-lang/rust/blob/0376d43d443cba463a0b6a6ec9140ea17d7b7130/src/tools/compiletest/src/runtest.rs#L507-L511 Noting: https://github.com/rust-lang/rust/blob/0376d43d443cba463a0b6a6ec9140ea17d7b7130/library/core/src/slice/mod.rs#L1064-L1066 Because of this, the revision check was getting an empty iterator when `self.props.compile_flags` was length 0 or 1. This fix adjusts the check to handle such cases. I went ahead and fixed the relevant test (4b3cd9b289ce0a36bda2756321f5fe455ea301e1) that was impacted by this. I do not suspect there are others, at least within the scope that Ferrocene tests, as we have not previously seen this failure.