Browse Source

Forbid hooks and groups to share the same name

ng
Rodolphe Bréard 1 month ago
parent
commit
e6eda717ab
Failed to extract signature
  1. 24
      src/config.rs

24
src/config.rs

@ -76,6 +76,12 @@ impl<'de> Deserialize<'de> for AcmedConfig {
if key.starts_with(crate::INTERNAL_HOOK_PREFIX) {
return Err(de::Error::custom(format!("{key}: invalid group name")));
}
// Group name must not be a hook name
if unchecked.hook.contains_key(key) {
return Err(de::Error::custom(format!(
"{key}: hooks and groups must not share the same name"
)));
}
// Group must only contain valid hook names
for hook_name in hook_lst {
if !unchecked.hook.contains_key(hook_name) {
@ -328,6 +334,24 @@ internal-grp = ["internaltest"]
assert!(res.is_err());
}
#[test]
fn hook_group_dup() {
let cfg = r#"
[hook."test"]
cmd = "cat"
type = ["file-pre-edit"]
[hook."my-hook"]
cmd = "cat"
type = ["file-pre-edit"]
[group]
test = ["my-hook"]
"#;
let res = load_str::<AcmedConfig>(cfg);
assert!(res.is_err());
}
#[test]
fn hook_account() {
let cfg = r#"

Loading…
Cancel
Save