use crate::spec::Target; #[test] fn report_unused_fields() { let json = serde_json::from_str( r#" { "arch": "powerpc64", "data-layout": "e-m:e-i64:64-n32:64", "llvm-target": "powerpc64le-elf", "target-pointer-width": "64", "code-mode": "foo" } "#, ) .unwrap(); let warnings = Target::from_json(json).unwrap().1; assert_eq!(warnings.warning_messages().len(), 1); assert!(warnings.warning_messages().join("\n").contains("code-mode")); } #[test] fn report_incorrect_json_type() { let json = serde_json::from_str( r#" { "arch": "powerpc64", "data-layout": "e-m:e-i64:64-n32:64", "llvm-target": "powerpc64le-elf", "target-pointer-width": "64", "link-env-remove": "foo" } "#, ) .unwrap(); let warnings = Target::from_json(json).unwrap().1; assert_eq!(warnings.warning_messages().len(), 1); assert!(warnings.warning_messages().join("\n").contains("link-env-remove")); } #[test] fn no_warnings_for_valid_target() { let json = serde_json::from_str( r#" { "arch": "powerpc64", "data-layout": "e-m:e-i64:64-n32:64", "llvm-target": "powerpc64le-elf", "target-pointer-width": "64", "link-env-remove": ["foo"] } "#, ) .unwrap(); let warnings = Target::from_json(json).unwrap().1; assert_eq!(warnings.warning_messages().len(), 0); }