in tools/determinator/src/rules.rs [693:823]
fn parse_bad() {
let bads = &[
// **************
// General errors
// **************
// unrecognized section
r#"[[foo]]
bar = "baz"
"#,
// unrecognized section
r#"[foo]
bar = "baz"
"#,
//
// **********
// Path rules
// **********
//
// unrecognized key
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = []
foo = "bar"
"#,
// globs is not a list
r#"[[path-rule]]
globs = "x"
mark-changed = []
"#,
// glob list doesn't have a string
r#"[[path-rule]]
globs = [123, "a/b"]
mark-changed = []
"#,
// rule totally missing
r#"[[path-rule]]
"#,
// globs missing
r#"[[path-rule]]
mark-changed = "all"
"#,
// mark-changed missing
r#"[[path-rule]]
globs = ["a/b"]
"#,
// mark-changed is an invalid string
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = "foo"
"#,
// mark-changed is not a string or list
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = 123
"#,
// mark-changed is not a list of strings
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = [123, "abc"]
"#,
// post-rule is invalid
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = []
post-rule = "abc"
"#,
// post-rule is not a string
r#"[[path-rule]]
globs = ["a/b"]
mark-changed = "all"
post-rule = []
"#,
//
// *************
// Package rules
// *************
//
// unrecognized key
r#"[[package-rule]]
on-affected = ["foo"]
mark-changed = []
foo = "bar"
"#,
// on-affected is not a list
r#"[[package-rule]]
on-affected = "foo"
mark-changed = []
"#,
// on-affected doesn't contain strings
r#"[[package-rule]]
on-affected = ["foo", 123]
mark-changed = []
"#,
// mark-changed is not a string or list
r#"[[package-rule]]
on-affected = ["foo"]
mark-changed = 123
"#,
// mark-changed is not a list of strings
r#"[[package-rule]]
on-affected = ["foo", 123]
mark-changed = ["bar", 456]
"#,
// mark-changed is an invalid string
r#"[[package-rule]]
on-affected = ["foo"]
mark-changed = "bar"
"#,
// on-affected is missing
r#"[[package-rule]]
mark-changed = "all"
"#,
// mark-changed is missing
r#"[[package-rule]]
on-affected = ["foo"]
"#,
];
for &bad in bads {
let res = DeterminatorRules::parse(bad);
if res.is_ok() {
panic!(
"parsing should have failed but succeeded:\n\
input = {}\n\
output: {:?}\n",
bad, res
);
}
}
}