]> git.lizzy.rs Git - rust.git/blob - tests/dogfood.rs
Merge pull request #1975 from bjgill/clippy--all
[rust.git] / tests / dogfood.rs
1 #![feature(test, plugin)]
2 #![plugin(clippy)]
3 #![deny(clippy, clippy_pedantic)]
4
5 extern crate compiletest_rs as compiletest;
6 extern crate test;
7
8 use std::env::{var, set_var};
9 use std::path::PathBuf;
10 use test::TestPaths;
11
12 #[test]
13 fn dogfood() {
14     // don't run dogfood on travis, cargo-clippy already runs clippy on itself
15     if let Ok(travis) = var("TRAVIS") {
16         if travis == "true" {
17             return;
18         }
19     }
20
21     let mut config = compiletest::Config::default();
22
23     let cfg_mode = "run-fail".parse().expect("Invalid mode");
24     let mut s = String::new();
25     s.push_str(" -L target/debug/");
26     s.push_str(" -L target/debug/deps");
27     s.push_str(
28         " -Zextra-plugins=clippy -Ltarget_recur/debug -Dwarnings -Dclippy_pedantic -Dclippy -Dclippy_internal",
29     );
30     config.target_rustcflags = Some(s);
31     if let Ok(name) = var("TESTNAME") {
32         config.filter = Some(name.to_owned())
33     }
34
35     config.mode = cfg_mode;
36     config.verbose = true;
37
38     let files = ["src/main.rs", "src/lib.rs", "clippy_lints/src/lib.rs"];
39
40     for file in &files {
41         let paths = TestPaths {
42             base: PathBuf::new(),
43             file: PathBuf::from(file),
44             relative_dir: PathBuf::new(),
45         };
46
47         set_var("CLIPPY_DOGFOOD", "tastes like chicken");
48
49         compiletest::runtest::run(config.clone(), &paths);
50     }
51 }