diff options
Diffstat (limited to 'tests/specs/mod.rs')
-rw-r--r-- | tests/specs/mod.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs index c46969f4e..7a3572a94 100644 --- a/tests/specs/mod.rs +++ b/tests/specs/mod.rs @@ -53,6 +53,8 @@ struct MultiTestMetaData { #[serde(default)] pub envs: HashMap<String, String>, #[serde(default)] + pub cwd: Option<String>, + #[serde(default)] pub tests: BTreeMap<String, JsonMap>, } @@ -73,6 +75,10 @@ impl MultiTestMetaData { if multi_test_meta_data.temp_dir && !value.contains_key("tempDir") { value.insert("tempDir".to_string(), true.into()); } + if multi_test_meta_data.cwd.is_some() && !value.contains_key("cwd") { + value + .insert("cwd".to_string(), multi_test_meta_data.cwd.clone().into()); + } if !multi_test_meta_data.envs.is_empty() { if !value.contains_key("envs") { value.insert("envs".to_string(), JsonMap::default().into()); @@ -112,6 +118,8 @@ struct MultiStepMetaData { #[serde(default)] pub base: Option<String>, #[serde(default)] + pub cwd: Option<String>, + #[serde(default)] pub envs: HashMap<String, String>, #[serde(default)] pub repeat: Option<usize>, @@ -136,6 +144,7 @@ impl SingleTestMetaData { pub fn into_multi(self) -> MultiStepMetaData { MultiStepMetaData { base: self.base, + cwd: None, temp_dir: self.temp_dir, repeat: self.repeat, envs: Default::default(), @@ -371,7 +380,7 @@ fn run_step( VecOrString::Vec(args) => command.args_vec(args), VecOrString::String(text) => command.args(text), }; - let command = match &step.cwd { + let command = match step.cwd.as_ref().or(metadata.cwd.as_ref()) { Some(cwd) => command.current_dir(cwd), None => command, }; |