blob: 5ffeb849da15d88dfc60223f79f7346214ae3476 [file] [log] [blame]
David Tolnayc7a5d3d2017-06-04 12:11:05 -07001#![allow(dead_code)]
2
Michael Layzell53fc31a2017-06-07 09:21:53 -04003extern crate walkdir;
4
Michael Layzell53fc31a2017-06-07 09:21:53 -04005use std::env;
6use std::u32;
7
David Tolnayc7a5d3d2017-06-04 12:11:05 -07008use self::walkdir::DirEntry;
9
Michael Layzell53fc31a2017-06-07 09:21:53 -040010macro_rules! errorf {
11 ($($tt:tt)*) => {
12 {
13 use ::std::io::Write;
14 write!(::std::io::stderr(), $($tt)*).unwrap();
15 }
16 };
17}
18
19pub mod parse;
20pub mod respan;
21
22pub fn check_min_stack() {
23 let min_stack_value = env::var("RUST_MIN_STACK")
24 .expect("RUST_MIN_STACK env var should be set since some tests require it.");
25 let min_stack_value: usize = min_stack_value.parse()
26 .expect("RUST_MIN_STACK env var should be set since some tests require it.");
27 assert!(min_stack_value >= 16000000);
28}
29
30/// Read the `ABORT_AFTER_FAILURE` environment variable, and parse it.
31pub fn abort_after() -> u32 {
32 if let Ok(s) = env::var("ABORT_AFTER_FAILURE") {
33 if let Ok(n) = s.parse::<u32>() {
34 return n;
35 }
36 }
37 u32::MAX
38}
39
40pub fn base_dir_filter(entry: &DirEntry) -> bool {
41 let path = entry.path();
42 if path.is_dir() {
43 return true; // otherwise walkdir does not visit the files
44 }
45 if path.extension().map(|e| e != "rs").unwrap_or(true) {
46 return false;
47 }
48 let path_string = path.to_string_lossy();
49 let path_string = if cfg!(windows) {
50 path_string.replace('\\', "/").into()
51 } else {
52 path_string
53 };
54 // TODO assert that parsing fails on the parse-fail cases
55 if path_string.starts_with("tests/rust/src/test/parse-fail") ||
56 path_string.starts_with("tests/rust/src/test/compile-fail") {
57 return false;
58 }
59
60 if path_string.starts_with("tests/rust/src/test/ui") {
61 let stderr_path = path.with_extension("stderr");
62 if stderr_path.exists() {
63 // Expected to fail in some way
64 return false;
65 }
66 }
67
68 match path_string.as_ref() {
69 // TODO better support for attributes
70 "tests/rust/src/librustc_data_structures/blake2b.rs" |
71 // TODO better support for attributes
72 "tests/rust/src/test/incremental/hashes/enum_defs.rs" |
73 // TODO better support for attributes
74 "tests/rust/src/test/pretty/stmt_expr_attributes.rs" |
75 // not actually a test case
76 "tests/rust/src/test/run-pass/auxiliary/macro-include-items-expr.rs" |
77 // TODO better support for attributes
78 "tests/rust/src/test/run-pass/cfg_stmt_expr.rs" |
79 // TODO weird glob import
80 "tests/rust/src/test/run-pass/import-glob-crate.rs" |
81 // TODO better support for attributes
82 "tests/rust/src/test/run-pass/inner-attrs-on-impl.rs" |
83 // TODO better support for attributes
84 "tests/rust/src/test/run-pass/item-attributes.rs" => false,
85 _ => true,
86 }
87}
88