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