Skip to content

Commit 9eae896

Browse files
committed
Add test for select_extra_targets
1 parent bc88ac6 commit 9eae896

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/docbuilder/metadata.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,4 +234,51 @@ mod test {
234234
"#);
235235
assert!(metadata.extra_targets.unwrap().is_empty());
236236
}
237+
#[test]
238+
fn test_select_extra_targets() {
239+
use crate::docbuilder::rustwide_builder::TARGETS;
240+
241+
let mut metadata = Metadata {
242+
extra_targets: None,
243+
..Metadata::default()
244+
};
245+
const DEFAULT_TARGET: &str = "x86-unknown-linux-gnu";
246+
247+
// unchanged default_target, extra targets not specified
248+
let tier_one = metadata.select_extra_targets(DEFAULT_TARGET);
249+
// should be equal to TARGETS except for DEFAULT_TARGET
250+
for actual in &tier_one {
251+
assert!(TARGETS.contains(actual));
252+
}
253+
for expected in TARGETS {
254+
if *expected == DEFAULT_TARGET {
255+
assert!(!tier_one.contains(DEFAULT_TARGET));
256+
} else {
257+
assert!(tier_one.contains(expected));
258+
}
259+
}
260+
261+
// unchanged default_target, extra targets specified to be empty
262+
metadata.extra_targets = Some(Vec::new());
263+
assert!(metadata.select_extra_targets(DEFAULT_TARGET).is_empty());
264+
265+
// unchanged default_target, extra targets includes targets besides default_target
266+
metadata.extra_targets = Some(vec!["i686-pc-windows-msvc".into(), "i686-apple-darwin".into()]);
267+
let extras = metadata.select_extra_targets(DEFAULT_TARGET);
268+
assert_eq!(extras.len(), 2);
269+
assert!(extras.contains("i686-pc-windows-msvc"));
270+
assert!(extras.contains("i686-apple-darwin"));
271+
272+
// make sure that default_target is not built twice
273+
metadata.extra_targets = Some(vec![DEFAULT_TARGET.into()]);
274+
assert!(metadata.select_extra_targets(DEFAULT_TARGET).is_empty());
275+
276+
// make sure that duplicates are removed
277+
metadata.extra_targets = Some(vec!["i686-pc-windows-msvc".into(), "i686-pc-windows-msvc".into()]);
278+
assert_eq!(metadata.select_extra_targets(DEFAULT_TARGET).len(), 1);
279+
280+
// try it with a different default target just for sanity
281+
assert!(metadata.select_extra_targets("i686-pc-windows-msvc").is_empty());
282+
283+
}
237284
}

0 commit comments

Comments
 (0)