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: &str = 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 | } |
33 | |