Skip to content

Commit

Permalink
Test and fix "required-by" relationship
Browse files Browse the repository at this point in the history
  • Loading branch information
bugadani committed Feb 12, 2025
1 parent 6e18cb6 commit 6c18c0e
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ impl ActiveConfiguration<'_> {
disabled_by.push(opt.name.as_str());
}
} else if o == option.name() {
required_by.push(o.as_str());
required_by.push(opt.name.as_str());
}
}
});
Expand Down Expand Up @@ -154,3 +154,44 @@ pub fn find_option<'c>(
}
None
}

#[cfg(test)]
mod test {
use esp_metadata::Chip;

use crate::{
config::ActiveConfiguration,
template::{GeneratorOption, GeneratorOptionItem},
};

#[test]
fn requires_picks_the_right_options() {
let options = &[
GeneratorOptionItem::Option(GeneratorOption {
name: "option1".to_string(),
display_name: "Foobar".to_string(),
help: "".to_string(),
chips: vec![Chip::Esp32],
requires: vec!["option2".to_string()],
}),
GeneratorOptionItem::Option(GeneratorOption {
name: "option2".to_string(),
display_name: "Barfoo".to_string(),
help: "".to_string(),
chips: vec![Chip::Esp32],
requires: vec![],
}),
];
let active = ActiveConfiguration {
chip: Chip::Esp32,
selected: vec!["option1".to_string()],
options,
};

let rels = active.collect_relationships(&options[0]);
assert_eq!(rels.requires, &["option2"]);

let rels = active.collect_relationships(&options[1]);
assert_eq!(rels.required_by, &["option1"]);
}
}

0 comments on commit 6c18c0e

Please sign in to comment.