1//! Custom flag for setting rustc revision-specific args.
2
3use super::Flag;
4use crate::{build_manager::BuildManager, per_test_config::TestConfig, Errored};
5
6/// Set rustc revision-specific args.
7#[derive(Clone, Debug)]
8pub struct RustcRevisionArgs;
9
10impl 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