Skip to content

Commit

Permalink
Rollup merge of rust-lang#58275 - RalfJung:miri-test-libcore, r=Mark-…
Browse files Browse the repository at this point in the history
…Simulacrum

libcore, liballoc: disable tests in Miri

I am going to run the libcore and liballoc unit test suites in Miri.  Not all tests pass.  This PR disables a whole bunch of tests when running in Miri, to get us to a baseline from which I can investigate failures.

Cc @SimonSapin @alexcrichton
  • Loading branch information
Centril authored Feb 8, 2019
2 parents c3b4102 + 81613ad commit 9708644
Show file tree
Hide file tree
Showing 20 changed files with 81 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/liballoc/tests/arc.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::any::Any;
use std::sync::{Arc, Weak};
use std::cell::RefCell;
Expand Down
1 change: 1 addition & 0 deletions src/liballoc/tests/binary_heap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@ fn assert_covariance() {
//
// Destructors must be called exactly once per element.
#[test]
#[cfg(not(miri))]
fn panic_safe() {
static DROP_COUNTER: AtomicUsize = AtomicUsize::new(0);

Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/btree/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

mod map;
mod set;

Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/heap.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::alloc::{Global, Alloc, Layout, System};

/// https://github.com/rust-lang/rust/issues/45955
Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/rc.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::any::Any;
use std::rc::{Rc, Weak};
use std::cell::RefCell;
Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/slice.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::cell::Cell;
use std::cmp::Ordering::{self, Equal, Greater, Less};
use std::mem;
Expand Down
21 changes: 21 additions & 0 deletions src/liballoc/tests/str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ fn test_rfind() {
}

#[test]
#[cfg(not(miri))]
fn test_collect() {
let empty = "";
let s: String = empty.chars().collect();
Expand Down Expand Up @@ -118,6 +119,7 @@ fn test_concat_for_different_types() {
#[test]
fn test_concat_for_different_lengths() {
let empty: &[&str] = &[];
#[cfg(not(miri))]
test_concat!("", empty);
test_concat!("a", ["a"]);
test_concat!("ab", ["a", "b"]);
Expand Down Expand Up @@ -146,6 +148,7 @@ fn test_join_for_different_types() {
#[test]
fn test_join_for_different_lengths() {
let empty: &[&str] = &[];
#[cfg(not(miri))]
test_join!("", empty, "-");
test_join!("a", ["a"], "-");
test_join!("a-b", ["a", "b"], "-");
Expand All @@ -159,13 +162,15 @@ fn test_join_for_different_lengths_with_long_separator() {
assert_eq!("~~~~~".len(), 15);

let empty: &[&str] = &[];
#[cfg(not(miri))]
test_join!("", empty, "~~~~~");
test_join!("a", ["a"], "~~~~~");
test_join!("a~~~~~b", ["a", "b"], "~~~~~");
test_join!("~~~~~a~~~~~bc", ["", "a", "bc"], "~~~~~");
}

#[test]
#[cfg(not(miri))]
fn test_unsafe_slice() {
assert_eq!("ab", unsafe {"abc".get_unchecked(0..2)});
assert_eq!("bc", unsafe {"abc".get_unchecked(1..3)});
Expand Down Expand Up @@ -238,6 +243,7 @@ fn test_replacen() {
#[test]
fn test_replace() {
let a = "a";
#[cfg(not(miri))]
assert_eq!("".replace(a, "b"), "");
assert_eq!("a".replace(a, "b"), "b");
assert_eq!("ab".replace(a, "b"), "bb");
Expand Down Expand Up @@ -297,6 +303,7 @@ fn test_replace_pattern() {
// The current implementation of SliceIndex fails to handle methods
// orthogonally from range types; therefore, it is worth testing
// all of the indexing operations on each input.
#[cfg(not(miri))]
mod slice_index {
// Test a slicing operation **that should succeed,**
// testing it on all of the indexing methods.
Expand Down Expand Up @@ -679,6 +686,7 @@ fn test_str_slice_rangetoinclusive_ok() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_str_slice_rangetoinclusive_notok() {
let s = "abcαβγ";
&s[..=3];
Expand All @@ -694,6 +702,7 @@ fn test_str_slicemut_rangetoinclusive_ok() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_str_slicemut_rangetoinclusive_notok() {
let mut s = "abcαβγ".to_owned();
let s: &mut str = &mut s;
Expand Down Expand Up @@ -883,6 +892,7 @@ fn test_as_bytes() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_as_bytes_fail() {
// Don't double free. (I'm not sure if this exercises the
// original problem code path anymore.)
Expand Down Expand Up @@ -972,6 +982,7 @@ fn test_split_at_mut() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_split_at_boundscheck() {
let s = "ศไทย中华Việt Nam";
s.split_at(1);
Expand Down Expand Up @@ -1066,6 +1077,7 @@ fn test_rev_iterator() {
}

#[test]
#[cfg(not(miri))]
fn test_chars_decoding() {
let mut bytes = [0; 4];
for c in (0..0x110000).filter_map(std::char::from_u32) {
Expand All @@ -1077,6 +1089,7 @@ fn test_chars_decoding() {
}

#[test]
#[cfg(not(miri))]
fn test_chars_rev_decoding() {
let mut bytes = [0; 4];
for c in (0..0x110000).filter_map(std::char::from_u32) {
Expand Down Expand Up @@ -1306,6 +1319,7 @@ fn test_splitator() {
}

#[test]
#[cfg(not(miri))]
fn test_str_default() {
use std::default::Default;

Expand Down Expand Up @@ -1365,6 +1379,7 @@ fn test_bool_from_str() {
assert_eq!("not even a boolean".parse::<bool>().ok(), None);
}

#[cfg(not(miri))]
fn check_contains_all_substrings(s: &str) {
assert!(s.contains(""));
for i in 0..s.len() {
Expand All @@ -1375,6 +1390,7 @@ fn check_contains_all_substrings(s: &str) {
}

#[test]
#[cfg(not(miri))]
fn strslice_issue_16589() {
assert!("bananas".contains("nana"));

Expand All @@ -1384,13 +1400,15 @@ fn strslice_issue_16589() {
}

#[test]
#[cfg(not(miri))]
fn strslice_issue_16878() {
assert!(!"1234567ah012345678901ah".contains("hah"));
assert!(!"00abc01234567890123456789abc".contains("bcabc"));
}


#[test]
#[cfg(not(miri))]
fn test_strslice_contains() {
let x = "There are moments, Jeeves, when one asks oneself, 'Do trousers matter?'";
check_contains_all_substrings(x);
Expand Down Expand Up @@ -1528,6 +1546,7 @@ fn trim_ws() {

#[test]
fn to_lowercase() {
#[cfg(not(miri))]
assert_eq!("".to_lowercase(), "");
assert_eq!("AÉDžaé ".to_lowercase(), "aédžaé ");

Expand Down Expand Up @@ -1561,6 +1580,7 @@ fn to_lowercase() {

#[test]
fn to_uppercase() {
#[cfg(not(miri))]
assert_eq!("".to_uppercase(), "");
assert_eq!("aéDžßfiᾀ".to_uppercase(), "AÉDŽSSFIἈΙ");
}
Expand Down Expand Up @@ -1592,6 +1612,7 @@ fn test_cow_from() {
}

#[test]
#[cfg(not(miri))]
fn test_repeat() {
assert_eq!("".repeat(3), "");
assert_eq!("abc".repeat(0), "");
Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/string.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::borrow::Cow;
use std::collections::CollectionAllocErr::*;
use std::mem::size_of;
Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/tests/vec.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use std::borrow::Cow;
use std::mem::size_of;
use std::{usize, isize};
Expand Down
7 changes: 7 additions & 0 deletions src/liballoc/tests/vec_deque.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ fn test_index() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_index_out_of_bounds() {
let mut deq = VecDeque::new();
for i in 1..4 {
Expand Down Expand Up @@ -906,20 +907,24 @@ fn test_append() {
// normal append
a.append(&mut b);
assert_eq!(a.iter().cloned().collect::<Vec<_>>(), [1, 2, 3, 4, 5, 6]);
#[cfg(not(miri))]
assert_eq!(b.iter().cloned().collect::<Vec<_>>(), []);

// append nothing to something
a.append(&mut b);
assert_eq!(a.iter().cloned().collect::<Vec<_>>(), [1, 2, 3, 4, 5, 6]);
#[cfg(not(miri))]
assert_eq!(b.iter().cloned().collect::<Vec<_>>(), []);

// append something to nothing
b.append(&mut a);
assert_eq!(b.iter().cloned().collect::<Vec<_>>(), [1, 2, 3, 4, 5, 6]);
#[cfg(not(miri))]
assert_eq!(a.iter().cloned().collect::<Vec<_>>(), []);
}

#[test]
#[cfg(not(miri))]
fn test_append_permutations() {
fn construct_vec_deque(
push_back: usize,
Expand Down Expand Up @@ -1120,6 +1125,7 @@ fn test_reserve_exact_2() {
}

#[test]
#[cfg(not(miri))]
fn test_try_reserve() {

// These are the interesting cases:
Expand Down Expand Up @@ -1221,6 +1227,7 @@ fn test_try_reserve() {
}

#[test]
#[cfg(not(miri))]
fn test_try_reserve_exact() {

// This is exactly the same as test_try_reserve with the method changed.
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/tests/cell.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use core::cell::*;
use core::default::Default;
use std::mem::drop;
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/tests/fmt/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

mod builders;
mod float;
mod num;
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/tests/hash/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

mod sip;

use std::hash::{Hash, Hasher};
Expand Down
8 changes: 8 additions & 0 deletions src/libcore/tests/iter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ fn test_iterator_step_by() {
}

#[test]
#[cfg(not(miri))]
fn test_iterator_step_by_nth() {
let mut it = (0..16).step_by(5);
assert_eq!(it.nth(0), Some(0));
Expand All @@ -208,6 +209,7 @@ fn test_iterator_step_by_nth() {
}

#[test]
#[cfg(not(miri))]
fn test_iterator_step_by_nth_overflow() {
#[cfg(target_pointer_width = "8")]
type Bigger = u16;
Expand Down Expand Up @@ -253,12 +255,14 @@ fn test_iterator_step_by_nth_overflow() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_iterator_step_by_zero() {
let mut it = (0..).step_by(0);
it.next();
}

#[test]
#[cfg(not(miri))]
fn test_iterator_step_by_size_hint() {
struct StubSizeHint(usize, Option<usize>);
impl Iterator for StubSizeHint {
Expand Down Expand Up @@ -1413,6 +1417,7 @@ fn test_rposition() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_rposition_panic() {
let v: [(Box<_>, Box<_>); 4] =
[(box 0, box 0), (box 0, box 0),
Expand Down Expand Up @@ -1652,6 +1657,7 @@ fn test_range_inclusive_nth() {
}

#[test]
#[cfg(not(miri))]
fn test_range_step() {
#![allow(deprecated)]

Expand All @@ -1675,13 +1681,15 @@ fn test_range_step() {
}

#[test]
#[cfg(not(miri))]
fn test_step_by_skip() {
assert_eq!((0..640).step_by(128).skip(1).collect::<Vec<_>>(), [128, 256, 384, 512]);
assert_eq!((0..=50).step_by(10).nth(3), Some(30));
assert_eq!((200..=255u8).step_by(10).nth(3), Some(230));
}

#[test]
#[cfg(not(miri))]
fn test_range_inclusive_step() {
assert_eq!((0..=50).step_by(10).collect::<Vec<_>>(), [0, 10, 20, 30, 40, 50]);
assert_eq!((0..=5).step_by(1).collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5]);
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/tests/num/mod.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use core::convert::{TryFrom, TryInto};
use core::cmp::PartialEq;
use core::fmt::Debug;
Expand Down
3 changes: 3 additions & 0 deletions src/libcore/tests/option.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ fn test_option_dance() {
}

#[test] #[should_panic]
#[cfg(not(miri))]
fn test_option_too_much_dance() {
struct A;
let mut y = Some(A);
Expand Down Expand Up @@ -129,13 +130,15 @@ fn test_unwrap() {

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_unwrap_panic1() {
let x: Option<isize> = None;
x.unwrap();
}

#[test]
#[should_panic]
#[cfg(not(miri))]
fn test_unwrap_panic2() {
let x: Option<String> = None;
x.unwrap();
Expand Down
2 changes: 2 additions & 0 deletions src/libcore/tests/ptr.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![cfg(not(miri))]

use core::ptr::*;
use core::cell::RefCell;

Expand Down
Loading

0 comments on commit 9708644

Please sign in to comment.