Skip to content

Commit a6738c7

Browse files
committed
Add tests
1 parent fa23d4f commit a6738c7

File tree

1 file changed

+92
-25
lines changed

1 file changed

+92
-25
lines changed

library/test/src/tests.rs

+92-25
Original file line numberDiff line numberDiff line change
@@ -567,11 +567,7 @@ pub fn exact_filter_match() {
567567
assert_eq!(exact.len(), 2);
568568
}
569569

570-
#[test]
571-
pub fn sort_tests() {
572-
let mut opts = TestOpts::new();
573-
opts.run_tests = true;
574-
570+
fn sample_tests() -> Vec<TestDescAndFn> {
575571
let names = vec![
576572
"sha1::test".to_string(),
577573
"isize::test_to_str".to_string(),
@@ -585,26 +581,32 @@ pub fn sort_tests() {
585581
"test::run_include_ignored_option".to_string(),
586582
"test::sort_tests".to_string(),
587583
];
588-
let tests = {
589-
fn testfn() {}
590-
let mut tests = Vec::new();
591-
for name in &names {
592-
let test = TestDescAndFn {
593-
desc: TestDesc {
594-
name: DynTestName((*name).clone()),
595-
ignore: false,
596-
should_panic: ShouldPanic::No,
597-
allow_fail: false,
598-
compile_fail: false,
599-
no_run: false,
600-
test_type: TestType::Unknown,
601-
},
602-
testfn: DynTestFn(Box::new(testfn)),
603-
};
604-
tests.push(test);
605-
}
606-
tests
607-
};
584+
fn testfn() {}
585+
let mut tests = Vec::new();
586+
for name in &names {
587+
let test = TestDescAndFn {
588+
desc: TestDesc {
589+
name: DynTestName((*name).clone()),
590+
ignore: false,
591+
should_panic: ShouldPanic::No,
592+
allow_fail: false,
593+
compile_fail: false,
594+
no_run: false,
595+
test_type: TestType::Unknown,
596+
},
597+
testfn: DynTestFn(Box::new(testfn)),
598+
};
599+
tests.push(test);
600+
}
601+
tests
602+
}
603+
604+
#[test]
605+
pub fn sort_tests() {
606+
let mut opts = TestOpts::new();
607+
opts.run_tests = true;
608+
609+
let tests = sample_tests();
608610
let filtered = filter_tests(&opts, tests);
609611

610612
let expected = vec![
@@ -626,6 +628,71 @@ pub fn sort_tests() {
626628
}
627629
}
628630

631+
#[test]
632+
pub fn shuffle_tests() {
633+
let mut opts = TestOpts::new();
634+
opts.shuffle = true;
635+
636+
let shuffle_seed = get_shuffle_seed(&opts).unwrap();
637+
638+
let left =
639+
sample_tests().into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
640+
let mut right =
641+
sample_tests().into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
642+
643+
assert!(left.iter().zip(&right).all(|(a, b)| a.1.desc.name == b.1.desc.name));
644+
645+
helpers::shuffle::shuffle_tests(shuffle_seed, right.as_mut_slice());
646+
647+
assert!(left.iter().zip(right).any(|(a, b)| a.1.desc.name != b.1.desc.name));
648+
}
649+
650+
#[test]
651+
pub fn shuffle_tests_with_seed() {
652+
let mut opts = TestOpts::new();
653+
opts.shuffle = true;
654+
655+
let shuffle_seed = get_shuffle_seed(&opts).unwrap();
656+
657+
let mut left =
658+
sample_tests().into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
659+
let mut right =
660+
sample_tests().into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
661+
662+
helpers::shuffle::shuffle_tests(shuffle_seed, left.as_mut_slice());
663+
helpers::shuffle::shuffle_tests(shuffle_seed, right.as_mut_slice());
664+
665+
assert!(left.iter().zip(right).all(|(a, b)| a.1.desc.name == b.1.desc.name));
666+
}
667+
668+
#[test]
669+
pub fn order_depends_on_more_than_seed() {
670+
let mut opts = TestOpts::new();
671+
opts.shuffle = true;
672+
673+
let shuffle_seed = get_shuffle_seed(&opts).unwrap();
674+
675+
let mut left_tests = sample_tests();
676+
let mut right_tests = sample_tests();
677+
678+
left_tests.pop();
679+
right_tests.remove(0);
680+
681+
let mut left =
682+
left_tests.into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
683+
let mut right =
684+
right_tests.into_iter().enumerate().map(|(i, e)| (TestId(i), e)).collect::<Vec<_>>();
685+
686+
assert_eq!(left.len(), right.len());
687+
688+
assert!(left.iter().zip(&right).all(|(a, b)| a.0 == b.0));
689+
690+
helpers::shuffle::shuffle_tests(shuffle_seed, left.as_mut_slice());
691+
helpers::shuffle::shuffle_tests(shuffle_seed, right.as_mut_slice());
692+
693+
assert!(left.iter().zip(right).any(|(a, b)| a.0 != b.0));
694+
}
695+
629696
#[test]
630697
pub fn test_metricmap_compare() {
631698
let mut m1 = MetricMap::new();

0 commit comments

Comments
 (0)