in target-spec/src/summaries.rs [222:293]
fn platform_deserialize_valid() {
// Need a wrapper because of TOML restrictions
#[derive(Debug, Deserialize, Serialize, Eq, PartialEq)]
struct Wrapper {
platform: PlatformSummary,
}
let mut valid = vec![];
valid.push((
r#"platform = "x86_64-unknown-linux-gnu""#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::Unknown,
flags: BTreeSet::new(),
},
));
valid.push((
r#"platform = { triple = "x86_64-unknown-linux-gnu" }"#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::Unknown,
flags: BTreeSet::new(),
},
));
valid.push((
r#"platform = { triple = "x86_64-unknown-linux-gnu", target-features = "unknown" }"#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::Unknown,
flags: BTreeSet::new(),
},
));
valid.push((
r#"platform = { triple = "x86_64-unknown-linux-gnu", target-features = "all" }"#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::All,
flags: BTreeSet::new(),
},
));
valid.push((
r#"platform = { triple = "x86_64-unknown-linux-gnu", target-features = [] }"#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::Features(BTreeSet::new()),
flags: BTreeSet::new(),
},
));
let mut flags = BTreeSet::new();
flags.insert("cargo_web".to_owned());
valid.push((
r#"platform = { triple = "x86_64-unknown-linux-gnu", flags = ["cargo_web"] }"#,
PlatformSummary {
triple: "x86_64-unknown-linux-gnu".into(),
target_features: TargetFeaturesSummary::Unknown,
flags,
},
));
for (input, expected) in valid {
let actual: Wrapper = toml::from_str(input)
.unwrap_or_else(|err| panic!("input {} is valid: {}", input, err));
assert_eq!(actual.platform, expected, "for input: {}", input);
// Serialize and deserialize again.
let serialized = toml::to_string(&actual).expect("serialized correctly");
let actual_2: Wrapper = toml::from_str(&serialized)
.unwrap_or_else(|err| panic!("serialized input: {} is valid: {}", input, err));
assert_eq!(actual, actual_2, "for input: {}", input);
}
}