]> git.lizzy.rs Git - rust.git/commitdiff
make liballoc internal test suite mostly pass in Miri
authorRalf Jung <post@ralfj.de>
Wed, 17 Apr 2019 17:11:56 +0000 (19:11 +0200)
committerRalf Jung <post@ralfj.de>
Thu, 18 Apr 2019 11:37:14 +0000 (13:37 +0200)
src/liballoc/alloc.rs
src/liballoc/collections/linked_list.rs
src/liballoc/collections/vec_deque.rs
src/liballoc/sync.rs

index f3877e51a6633f2589885ce08015fa5d0da46b85..ddc6481eec78e9d703b4a26499cd60cac93b8cca 100644 (file)
@@ -252,6 +252,7 @@ fn allocate_zeroed() {
     }
 
     #[bench]
+    #[cfg(not(miri))] // Miri does not support benchmarks
     fn alloc_owned_small(b: &mut Bencher) {
         b.iter(|| {
             let _: Box<_> = box 10;
index d6d84a4f083d060ca380ffccca8cece42deccc11..cb390aa419ed4038316bcea971a6b4450a7189e5 100644 (file)
@@ -1354,6 +1354,7 @@ fn test_insert_prev() {
 
     #[test]
     #[cfg_attr(target_os = "emscripten", ignore)]
+    #[cfg(not(miri))] // Miri does not support threads
     fn test_send() {
         let n = list_from(&[1, 2, 3]);
         thread::spawn(move || {
@@ -1371,6 +1372,7 @@ fn test_fuzz() {
         for _ in 0..25 {
             fuzz_test(3);
             fuzz_test(16);
+            #[cfg(not(miri))] // Miri is too slow
             fuzz_test(189);
         }
     }
index 4bea615ab861face0477a12fc36446c2f32874c2..2ecc1df17ded5c039e31741d62bffb2dca0e0320 100644 (file)
@@ -2799,6 +2799,7 @@ mod tests {
     use super::VecDeque;
 
     #[bench]
+    #[cfg(not(miri))] // Miri does not support benchmarks
     fn bench_push_back_100(b: &mut test::Bencher) {
         let mut deq = VecDeque::with_capacity(101);
         b.iter(|| {
@@ -2811,6 +2812,7 @@ fn bench_push_back_100(b: &mut test::Bencher) {
     }
 
     #[bench]
+    #[cfg(not(miri))] // Miri does not support benchmarks
     fn bench_push_front_100(b: &mut test::Bencher) {
         let mut deq = VecDeque::with_capacity(101);
         b.iter(|| {
@@ -2823,6 +2825,7 @@ fn bench_push_front_100(b: &mut test::Bencher) {
     }
 
     #[bench]
+    #[cfg(not(miri))] // Miri does not support benchmarks
     fn bench_pop_back_100(b: &mut test::Bencher) {
         let mut deq = VecDeque::<i32>::with_capacity(101);
 
@@ -2836,6 +2839,7 @@ fn bench_pop_back_100(b: &mut test::Bencher) {
     }
 
     #[bench]
+    #[cfg(not(miri))] // Miri does not support benchmarks
     fn bench_pop_front_100(b: &mut test::Bencher) {
         let mut deq = VecDeque::<i32>::with_capacity(101);
 
@@ -3090,6 +3094,11 @@ fn test_from_vec() {
     fn test_vec_from_vecdeque() {
         use crate::vec::Vec;
 
+        #[cfg(not(miri))] // Miri is too slow
+        let max_pwr = 7;
+        #[cfg(miri)]
+        let max_pwr = 5;
+
         fn create_vec_and_test_convert(cap: usize, offset: usize, len: usize) {
             let mut vd = VecDeque::with_capacity(cap);
             for _ in 0..offset {
@@ -3103,7 +3112,7 @@ fn create_vec_and_test_convert(cap: usize, offset: usize, len: usize) {
             assert!(vec.into_iter().eq(vd));
         }
 
-        for cap_pwr in 0..7 {
+        for cap_pwr in 0..max_pwr {
             // Make capacity as a (2^x)-1, so that the ring size is 2^x
             let cap = (2i32.pow(cap_pwr) - 1) as usize;
 
index b7d7995b540bac75fd23000e8351cd76c66bfd1b..466e806663c7f331d9baaee713c8a16947d551bf 100644 (file)
@@ -1678,6 +1678,7 @@ fn drop(&mut self) {
 
     #[test]
     #[cfg_attr(target_os = "emscripten", ignore)]
+    #[cfg(not(miri))] // Miri does not support threads
     fn manually_share_arc() {
         let v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
         let arc_v = Arc::new(v);
@@ -1982,6 +1983,7 @@ fn test_ptr_eq() {
 
     #[test]
     #[cfg_attr(target_os = "emscripten", ignore)]
+    #[cfg(not(miri))] // Miri does not support threads
     fn test_weak_count_locked() {
         let mut a = Arc::new(atomic::AtomicBool::new(false));
         let a2 = a.clone();