Skip to content

Commit 94102ab

Browse files
committed
extend test comparison
1 parent d792d74 commit 94102ab

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

rust/operator-binary/src/controller/validate.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,28 @@ mod tests {
341341
let role = overrides(&[("a", Some("role"))]);
342342
let role_group = overrides(&[("a", None)]); // explicit `null` at the more specific level
343343

344-
let merged = resolve(role, Some(role_group));
344+
// For contrast: `main`'s product-config used a blind `.extend()`, so the role-group
345+
// `null` overwrote the role value and the key was then dropped — i.e. unset entirely.
346+
let old_extend_behaviour: BTreeMap<String, String> = {
347+
let mut combined = role.overrides.clone();
348+
combined.extend(role_group.overrides.clone());
349+
combined
350+
.into_iter()
351+
.filter_map(|(key, value)| value.map(|value| (key, value)))
352+
.collect()
353+
};
354+
assert!(
355+
old_extend_behaviour.is_empty(),
356+
"under the old `.extend()` behaviour the role-group `null` unsets `a`"
357+
);
345358

359+
// What we do now (Merge): the role-group `null` means "inherit", so the role-level
360+
// value is kept rather than unset.
361+
let merged = resolve(role, Some(role_group));
346362
assert_eq!(
347363
merged,
348364
BTreeMap::from([("a".to_string(), "role".to_string())]),
349-
"a role-group `null` should inherit the role-level value under Merge semantics"
365+
"under Merge semantics the role-group `null` inherits the role-level value"
350366
);
351367
}
352368

0 commit comments

Comments
 (0)