in target-spec/src/simple_eval.rs [78:131]
fn test_bogus_families() {
// Known bogus families.
for family in &["test", "debug_assertions", "proc_macro"] {
let cfg = format!("cfg({})", family);
let cfg_not = format!("cfg(not({}))", family);
assert_eq!(eval(&cfg, "x86_64-unknown-linux-gnu"), Ok(Some(false)));
assert_eq!(eval(&cfg_not, "x86_64-unknown-linux-gnu"), Ok(Some(true)));
}
// Unknown bogus families.
let platform = Platform::new("x86_64-unknown-linux-gnu", TargetFeatures::Unknown).unwrap();
let mut platform_with_flags = platform.clone();
platform_with_flags.add_flags(["foo", "bar"].iter().copied());
for family in &["foo", "bar"] {
let cfg = format!("cfg({})", family);
let cfg_not = format!("cfg(not({}))", family);
// eval always means flags are evaluated to false.
assert_eq!(eval(&cfg, "x86_64-unknown-linux-gnu"), Ok(Some(false)));
assert_eq!(eval(&cfg_not, "x86_64-unknown-linux-gnu"), Ok(Some(true)));
let spec: TargetSpec = cfg.parse().unwrap();
let spec_not: TargetSpec = cfg_not.parse().unwrap();
// flag missing means false.
assert_eq!(spec.eval(&platform), Some(false));
assert_eq!(spec_not.eval(&platform), Some(true));
// flag present means true.
assert_eq!(spec.eval(&platform_with_flags), Some(true));
assert_eq!(spec_not.eval(&platform_with_flags), Some(false));
}
for family in &["baz", "nonsense"] {
let cfg = format!("cfg({})", family);
let cfg_not = format!("cfg(not({}))", family);
// eval always means flags are evaluated to false.
assert_eq!(eval(&cfg, "x86_64-unknown-linux-gnu"), Ok(Some(false)));
assert_eq!(eval(&cfg_not, "x86_64-unknown-linux-gnu"), Ok(Some(true)));
let spec: TargetSpec = cfg.parse().unwrap();
let spec_not: TargetSpec = cfg_not.parse().unwrap();
// flag missing means false.
assert_eq!(spec.eval(&platform), Some(false));
assert_eq!(spec_not.eval(&platform), Some(true));
// flag still missing means false.
assert_eq!(spec.eval(&platform_with_flags), Some(false));
assert_eq!(spec_not.eval(&platform_with_flags), Some(true));
}
}