X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=tests%2Fdogfood.rs;h=81af3d3033b23c268a152258d74a30a8cd0d4ecc;hb=e820a03d1c905d58b27d7ac6d85f450f9754ba79;hp=590027f849186e103ba8aa123cffe7478fc265c4;hpb=920fc174853a2a31111349d695841c5dd61f61fb;p=rust.git diff --git a/tests/dogfood.rs b/tests/dogfood.rs index 590027f8491..81af3d3033b 100644 --- a/tests/dogfood.rs +++ b/tests/dogfood.rs @@ -1,19 +1,72 @@ +// Dogfood cannot run on Windows +#![cfg(not(windows))] + +use lazy_static::lazy_static; +use std::path::PathBuf; +use std::process::Command; + +mod cargo; + +lazy_static! { + static ref CLIPPY_PATH: PathBuf = cargo::TARGET_LIB.join("cargo-clippy"); +} + #[test] -fn dogfood() { - if option_env!("RUSTC_TEST_SUITE").is_some() { +fn dogfood_clippy() { + // run clippy on itself and fail the test if lint warnings are reported + if cargo::is_rustc_test_suite() { return; } - if cfg!(windows) { + let root_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + + let output = Command::new(&*CLIPPY_PATH) + .current_dir(root_dir) + .env("CLIPPY_DOGFOOD", "1") + .env("CARGO_INCREMENTAL", "0") + .arg("clippy-preview") + .arg("--all-targets") + .arg("--all-features") + .arg("--") + .args(&["-D", "clippy::all"]) + .args(&["-D", "clippy::internal"]) + .args(&["-D", "clippy::pedantic"]) + .arg("-Cdebuginfo=0") // disable debuginfo to generate less data in the target dir + .output() + .unwrap(); + println!("status: {}", output.status); + println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); + println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); + + assert!(output.status.success()); +} + +#[test] +fn dogfood_subprojects() { + // run clippy on remaining subprojects and fail the test if lint warnings are reported + if cargo::is_rustc_test_suite() { return; } - let root_dir = std::env::current_dir().unwrap(); - for d in &[".", "clippy_lints"] { - std::env::set_current_dir(root_dir.join(d)).unwrap(); - let output = std::process::Command::new("cargo") - .arg("run") - .arg("--bin").arg("cargo-clippy") - .arg("--manifest-path").arg(root_dir.join("Cargo.toml")) - .output().unwrap(); + let root_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + + for d in &[ + "clippy_workspace_tests", + "clippy_workspace_tests/src", + "clippy_workspace_tests/subcrate", + "clippy_workspace_tests/subcrate/src", + "clippy_dev", + "rustc_tools_util", + ] { + let output = Command::new(&*CLIPPY_PATH) + .current_dir(root_dir.join(d)) + .env("CLIPPY_DOGFOOD", "1") + .env("CARGO_INCREMENTAL", "0") + .arg("clippy") + .arg("--") + .args(&["-D", "clippy::all"]) + .args(&["-D", "clippy::pedantic"]) + .arg("-Cdebuginfo=0") // disable debuginfo to generate less data in the target dir + .output() + .unwrap(); println!("status: {}", output.status); println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); println!("stderr: {}", String::from_utf8_lossy(&output.stderr));