diff --git a/crates/settings/src/scenario.rs b/crates/settings/src/scenario.rs index 93d612b10..a16c88216 100644 --- a/crates/settings/src/scenario.rs +++ b/crates/settings/src/scenario.rs @@ -115,20 +115,28 @@ impl Scenario { .map(|blocks| Scenario::validate_blocks(&blocks)) .transpose()?; - if let Some(deployer_name) = optional_string(scenario_yaml, "deployer") { - let current_deployer = - Deployer::parse_from_yaml(documents.clone(), &deployer_name, None)?; + let mut current_deployer: Option = None; + + if let Ok(dep) = Deployer::parse_from_yaml(documents.clone(), &scenario_key, None) { + current_deployer = Some(dep); + } else if let Some(deployer_name) = optional_string(scenario_yaml, "deployer") { + current_deployer = Some(Deployer::parse_from_yaml( + documents.clone(), + &deployer_name, + None, + )?); + } + if let Some(current_deployer) = current_deployer { if let Some(parent_deployer) = parent_scenario.deployer.as_ref() { if current_deployer.key != parent_deployer.key { return Err(YamlError::ParseScenarioConfigSourceError( ParseScenarioConfigSourceError::ParentDeployerShadowedError( - deployer_name.clone(), + current_deployer.key.clone(), ), )); } } - *deployer = Some(Arc::new(current_deployer)); } diff --git a/crates/settings/src/yaml/dotrain.rs b/crates/settings/src/yaml/dotrain.rs index fa3849756..607b91ba3 100644 --- a/crates/settings/src/yaml/dotrain.rs +++ b/crates/settings/src/yaml/dotrain.rs @@ -161,7 +161,7 @@ mod tests { label: USD Coin symbol: USDC deployers: - deployer1: + scenario1: address: 0x0000000000000000000000000000000000000002 network: mainnet deployer2: @@ -179,7 +179,6 @@ mod tests { scenario1: bindings: key1: value1 - deployer: deployer1 scenarios: scenario2: bindings: @@ -309,7 +308,7 @@ mod tests { assert_eq!(scenario1.bindings.get("key1").unwrap(), "value1"); assert_eq!( *scenario1.deployer.as_ref(), - ob_yaml.get_deployer("deployer1").unwrap() + ob_yaml.get_deployer("scenario1").unwrap() ); let scenario2 = dotrain_yaml.get_scenario("scenario1.scenario2").unwrap(); assert_eq!(scenario2.bindings.len(), 2); @@ -317,7 +316,7 @@ mod tests { assert_eq!(scenario2.bindings.get("key2").unwrap(), "value2"); assert_eq!( *scenario2.deployer.as_ref(), - ob_yaml.get_deployer("deployer1").unwrap() + ob_yaml.get_deployer("scenario1").unwrap() ); let deployment_keys = dotrain_yaml.get_deployment_keys().unwrap();