Skip to content

Commit

Permalink
Auto merge of #13100 - Alexendoo:dogfood-progress, r=xFrednet
Browse files Browse the repository at this point in the history
Show progress while running dogfood test

Outputs the regular cargo progress in colour when running the dogfood test, helpful to see because it can take a long time to run

changelog: none
  • Loading branch information
bors committed Jul 17, 2024
2 parents f74037e + 0b0c39c commit acc41f4
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ uibless = "test --test compile-test -- -- --bless"
bless = "test -- -- --bless"
dev = "run --package clippy_dev --bin clippy_dev --manifest-path clippy_dev/Cargo.toml --"
lintcheck = "run --package lintcheck --bin lintcheck --manifest-path lintcheck/Cargo.toml -- "
collect-metadata = "test --test dogfood --features internal -- run_metadata_collection_lint --ignored"
collect-metadata = "test --test dogfood --features internal -- collect_metadata"

[build]
# -Zbinary-dep-depinfo allows us to track which rlib files to use for compiling UI tests
Expand Down
5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ ui_test = "0.24"
regex = "1.5.5"
toml = "0.7.3"
walkdir = "2.3"
# This is used by the `collect-metadata` alias.
filetime = "0.2.9"
itertools = "0.12"

Expand Down Expand Up @@ -63,3 +62,7 @@ rustc_private = true
[[test]]
name = "compile-test"
harness = false

[[test]]
name = "dogfood"
harness = false
47 changes: 30 additions & 17 deletions tests/dogfood.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,49 @@
#![warn(rust_2018_idioms, unused_lifetimes)]

use itertools::Itertools;
use std::fs::File;
use std::io::{self, IsTerminal};
use std::path::PathBuf;
use std::process::Command;
use std::time::SystemTime;
use test_utils::IS_RUSTC_TEST_SUITE;
use ui_test::Args;

mod test_utils;

#[test]
fn dogfood_clippy() {
fn main() {
if IS_RUSTC_TEST_SUITE {
return;
}

let args = Args::test().unwrap();

if args.list {
if !args.ignored {
println!("dogfood: test");
}
} else if !args.skip.iter().any(|arg| arg == "dogfood") {
if args.filters.iter().any(|arg| arg == "collect_metadata") {
collect_metadata();
} else {
dogfood();
}
}
}

fn dogfood() {
let mut failed_packages = Vec::new();

// "" is the root package
for package in [
"",
"./",
"clippy_dev",
"clippy_lints",
"clippy_utils",
"clippy_config",
"lintcheck",
"rustc_tools_util",
] {
println!("linting {package}");
if !run_clippy_for_package(package, &["-D", "clippy::all", "-D", "clippy::pedantic"]) {
failed_packages.push(if package.is_empty() { "root" } else { package });
}
Expand All @@ -43,12 +62,8 @@ fn dogfood_clippy() {
);
}

#[test]
#[ignore]
#[cfg(feature = "internal")]
fn run_metadata_collection_lint() {
use std::fs::File;
use std::time::SystemTime;
fn collect_metadata() {
assert!(cfg!(feature = "internal"));

// Setup for validation
let metadata_output_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("util/gh-pages/lints.json");
Expand Down Expand Up @@ -101,6 +116,10 @@ fn run_clippy_for_package(project: &str, args: &[&str]) -> bool {
.arg("--all-targets")
.arg("--all-features");

if !io::stdout().is_terminal() {
command.arg("-q");
}

if let Ok(dogfood_args) = std::env::var("__CLIPPY_DOGFOOD_ARGS") {
for arg in dogfood_args.split_whitespace() {
command.arg(arg);
Expand All @@ -119,11 +138,5 @@ fn run_clippy_for_package(project: &str, args: &[&str]) -> bool {
command.args(["-A", "unknown_lints"]);
}

let output = command.output().unwrap();

println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));

output.status.success()
command.status().unwrap().success()
}

0 comments on commit acc41f4

Please sign in to comment.