Fix: Keep env order for extended makefiles #523

This commit is contained in:
sagie gur ari
2021-03-06 14:32:52 +00:00
parent 97ba362846
commit eadb2c389c
5 changed files with 52 additions and 22 deletions
+4
View File
@@ -1,5 +1,9 @@
## CHANGELOG
### v0.32.14
* Fix: Keep env order for extended makefiles #523
### v0.32.13 (2021-03-05)
* Enhancement: Support rust-script as an additional rust runner #516
+5
View File
@@ -0,0 +1,5 @@
extend = "env.toml"
[env]
SIMPLE = "EXTENDED VALUE"
+23 -22
View File
@@ -48,30 +48,31 @@ fn merge_env(
if !key_str.starts_with("CARGO_MAKE_CURRENT_TASK_") {
let value_clone = value.clone();
if merged.contains_key(&key_str) {
let base_value = merged.swap_remove(&key_str).unwrap();
match merged.get(&key_str) {
Some(base_value) => {
let base_value_clone = base_value.clone();
match (base_value_clone, value_clone.clone()) {
(
EnvValue::Profile(ref base_profile_env),
EnvValue::Profile(ref extended_profile_env),
) => {
let mut base_profile_env_mut = base_profile_env.clone();
let mut extended_profile_env_mut = extended_profile_env.clone();
match (base_value, value_clone.clone()) {
(
EnvValue::Profile(ref base_profile_env),
EnvValue::Profile(ref extended_profile_env),
) => {
let mut base_profile_env_mut = base_profile_env.clone();
let mut extended_profile_env_mut = extended_profile_env.clone();
let merged_sub_env =
merge_env(&mut base_profile_env_mut, &mut extended_profile_env_mut);
let merged_sub_env =
merge_env(&mut base_profile_env_mut, &mut extended_profile_env_mut);
merged.insert(key_str, EnvValue::Profile(merged_sub_env));
}
_ => {
merged.insert(key_str, value_clone);
()
}
};
} else {
merged.insert(key_str, value_clone);
}
merged.insert(key_str, EnvValue::Profile(merged_sub_env));
}
_ => {
merged.insert(key_str, value_clone);
}
};
}
None => {
merged.insert(key_str, value_clone);
}
};
}
}
+15
View File
@@ -404,6 +404,21 @@ fn load_descriptors_no_load_workspace_makefile() {
assert!(task.is_none());
}
#[test]
#[ignore]
fn load_env_extended_override() {
let toml_file = "./src/lib/test/makefiles/env-extended.toml";
envmnt::remove_all(&vec!["IF_UNDEFINED", "COMPOSITE_OF_MAPPED"]);
let config = load(toml_file, true, None, false).unwrap();
environment::set_env_for_config(config.env, None, false);
assert!(envmnt::is_equal("IF_UNDEFINED", "EXTENDED"));
assert!(envmnt::is_equal("COMPOSITE_OF_MAPPED", "VALUE: EXTENDED"));
envmnt::remove_all(&vec!["IF_UNDEFINED", "COMPOSITE_OF_MAPPED"]);
}
#[test]
#[ignore]
fn load_env_override() {
+5
View File
@@ -0,0 +1,5 @@
extend = "./env.toml"
[env]
IF_UNDEFINED = "EXTENDED"