summaryrefslogtreecommitdiff
path: root/tests/specs/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs/mod.rs')
-rw-r--r--tests/specs/mod.rs11
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,
};