| #![feature(test, plugin)] |
| #![plugin(clippy)] |
| #![deny(clippy, clippy_pedantic)] |
| |
| extern crate compiletest_rs as compiletest; |
| extern crate test; |
| |
| use std::env::{var, set_var}; |
| use std::path::PathBuf; |
| use test::TestPaths; |
| |
| #[test] |
| fn dogfood() { |
| // don't run dogfood on travis, cargo-clippy already runs clippy on itself |
| if let Ok(travis) = var("TRAVIS") { |
| if travis == "true" { |
| return; |
| } |
| } |
| |
| let mut config = compiletest::Config::default(); |
| |
| let cfg_mode = "run-fail".parse().expect("Invalid mode"); |
| let mut s = String::new(); |
| s.push_str(" -L target/debug/"); |
| s.push_str(" -L target/debug/deps"); |
| s.push_str( |
| " -Zextra-plugins=clippy -Ltarget_recur/debug -Dwarnings -Dclippy_pedantic -Dclippy -Dclippy_internal", |
| ); |
| config.target_rustcflags = Some(s); |
| if let Ok(name) = var("TESTNAME") { |
| config.filter = Some(name.to_owned()) |
| } |
| |
| config.mode = cfg_mode; |
| config.verbose = true; |
| |
| let files = ["src/main.rs", "src/lib.rs", "clippy_lints/src/lib.rs"]; |
| |
| for file in &files { |
| let paths = TestPaths { |
| base: PathBuf::new(), |
| file: PathBuf::from(file), |
| relative_dir: PathBuf::new(), |
| }; |
| |
| set_var("CLIPPY_DOGFOOD", "tastes like chicken"); |
| |
| compiletest::runtest::run(config.clone(), &paths); |
| } |
| } |