Skip to content

Commit a2a7d13

Browse files
authored
Merge pull request #291 from DaniPopes/revision-args
Move revision-specific args to a custom flag
2 parents 6bffd73 + 31ad36c commit a2a7d13

File tree

6 files changed

+42
-6
lines changed

6 files changed

+42
-6
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515

1616
### Changed
1717

18+
* moved rustc revision-specific arguments (`--cfg=<revision>`...) to a custom flag (`custom_flags::revision_args`)
19+
1820
## [0.27.0] - 2024-10-07
1921

2022
### Added

src/config.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#[cfg(feature = "rustc")]
22
use crate::{
3-
aux_builds::AuxBuilder, custom_flags::edition::Edition, custom_flags::run::Run,
3+
aux_builds::AuxBuilder, custom_flags::edition::Edition,
4+
custom_flags::revision_args::RustcRevisionArgs, custom_flags::run::Run,
45
custom_flags::rustfix::RustfixMode, custom_flags::Flag, filter::Match,
56
};
67
use crate::{
@@ -129,6 +130,9 @@ impl Config {
129130
}
130131
}
131132

133+
comment_defaults
134+
.base()
135+
.add_custom("rustc-revision-args", RustcRevisionArgs);
132136
comment_defaults
133137
.base()
134138
.add_custom("edition", Edition("2021".into()));

src/custom_flags.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ use std::{
1111
#[cfg(feature = "rustc")]
1212
pub mod edition;
1313
#[cfg(feature = "rustc")]
14+
pub mod revision_args;
15+
#[cfg(feature = "rustc")]
1416
pub mod run;
1517
pub mod rustfix;
1618

src/custom_flags/revision_args.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//! Custom flag for setting rustc revision-specific args.
2+
3+
use super::Flag;
4+
use crate::{build_manager::BuildManager, per_test_config::TestConfig, Errored};
5+
6+
/// Set rustc revision-specific args.
7+
#[derive(Clone, Debug)]
8+
pub struct RustcRevisionArgs;
9+
10+
impl Flag for RustcRevisionArgs {
11+
fn clone_inner(&self) -> Box<dyn Flag> {
12+
Box::new(self.clone())
13+
}
14+
15+
fn must_be_unique(&self) -> bool {
16+
true
17+
}
18+
19+
fn apply(
20+
&self,
21+
cmd: &mut std::process::Command,
22+
config: &TestConfig,
23+
_build_manager: &BuildManager,
24+
) -> Result<(), Errored> {
25+
let revision = config.status.revision();
26+
if !revision.is_empty() {
27+
cmd.arg(format!("--cfg={revision}"));
28+
cmd.arg(format!("-Cextra-filename={revision}"));
29+
}
30+
Ok(())
31+
}
32+
}

src/per_test_config.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,6 @@ impl TestConfig {
133133
pub fn build_command(&self, build_manager: &BuildManager) -> Result<Command, Errored> {
134134
let mut cmd = self.config.program.build(&self.config.out_dir);
135135
cmd.arg(self.status.path());
136-
if !self.status.revision().is_empty() {
137-
cmd.arg(format!("--cfg={}", self.status.revision()));
138-
cmd.arg(format!("-Cextra-filename={}", self.status.revision()));
139-
}
140136
for r in self.comments() {
141137
cmd.args(&r.compile_flags);
142138
}

tests/integrations/basic-fail/Cargo.stdout

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ full stdout:
826826

827827

828828
FAILED TEST: tests/actual_tests_bless/revisions_bad.rs (revision `bar`)
829-
command: "rustc" "--error-format=json" "--out-dir" "$TMP "tests/actual_tests_bless/revisions_bad.rs" "--cfg=bar" "-Cextra-filename=bar" "--extern" "basic_fail=$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug/libbasic_fail.rlib" "--extern" "basic_fail=$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug/libbasic_fail-$HASH.rmeta" "-L" "$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug" "-L" "$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug" "--edition" "2021"
829+
command: "rustc" "--error-format=json" "--out-dir" "$TMP "tests/actual_tests_bless/revisions_bad.rs" "--extern" "basic_fail=$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug/libbasic_fail.rlib" "--extern" "basic_fail=$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug/libbasic_fail-$HASH.rmeta" "-L" "$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug" "-L" "$DIR/tests/integrations/basic-fail/../../../target/$TMP/$TRIPLE/debug" "--edition" "2021" "--cfg=bar" "-Cextra-filename=bar"
830830

831831
error: ``main` function not found in crate `revisions_bad`` not found in diagnostics outside the testfile
832832
--> tests/actual_tests_bless/revisions_bad.rs:4:31

0 commit comments

Comments
 (0)