in tools/determinator/src/rules.rs [619:679]
fn parse() {
let s = r#"[[path-rule]]
globs = ["all/*"]
mark-changed = "all"
post-rule = "fallthrough"
[[path-rule]]
globs = ["all/1/2/*"]
mark-changed = ["c"]
post-rule = "skip-rules"
[[path-rule]]
globs = ["none/**/test", "foo/bar"]
mark-changed = []
[[package-rule]]
on-affected = ["foo"]
mark-changed = ["wat"]
[[package-rule]]
on-affected = ["test1"]
mark-changed = "all"
"#;
let expected = DeterminatorRules {
use_default_rules: true,
path_rules: vec![
PathRule {
globs: vec!["all/*".to_owned()],
mark_changed: DeterminatorMarkChanged::All,
post_rule: DeterminatorPostRule::Fallthrough,
},
PathRule {
globs: vec!["all/1/2/*".to_owned()],
mark_changed: DeterminatorMarkChanged::Packages(vec!["c".to_owned()]),
post_rule: DeterminatorPostRule::SkipRules,
},
PathRule {
globs: vec!["none/**/test".to_owned(), "foo/bar".to_owned()],
mark_changed: DeterminatorMarkChanged::Packages(vec![]),
post_rule: DeterminatorPostRule::Skip,
},
],
package_rules: vec![
PackageRule {
on_affected: vec!["foo".to_string()],
mark_changed: DeterminatorMarkChanged::Packages(vec!["wat".to_string()]),
},
PackageRule {
on_affected: vec!["test1".to_string()],
mark_changed: DeterminatorMarkChanged::All,
},
],
};
assert_eq!(
DeterminatorRules::parse(s),
Ok(expected),
"parse() result matches"
);
}