Show progress while running dogfood test

This commit is contained in:
Alex Macleod 2024-07-15 12:51:07 +00:00
parent 0ee9f44568
commit 0b0c39ca4d
3 changed files with 35 additions and 19 deletions

View File

@ -4,7 +4,7 @@ uibless = "test --test compile-test -- -- --bless"
bless = "test -- -- --bless" bless = "test -- -- --bless"
dev = "run --package clippy_dev --bin clippy_dev --manifest-path clippy_dev/Cargo.toml --" 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 -- " 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] [build]
# -Zbinary-dep-depinfo allows us to track which rlib files to use for compiling UI tests # -Zbinary-dep-depinfo allows us to track which rlib files to use for compiling UI tests

View File

@ -34,7 +34,6 @@ ui_test = "0.24"
regex = "1.5.5" regex = "1.5.5"
toml = "0.7.3" toml = "0.7.3"
walkdir = "2.3" walkdir = "2.3"
# This is used by the `collect-metadata` alias.
filetime = "0.2.9" filetime = "0.2.9"
itertools = "0.12" itertools = "0.12"
@ -63,3 +62,7 @@ rustc_private = true
[[test]] [[test]]
name = "compile-test" name = "compile-test"
harness = false harness = false
[[test]]
name = "dogfood"
harness = false

View File

@ -7,23 +7,41 @@
#![warn(rust_2018_idioms, unused_lifetimes)] #![warn(rust_2018_idioms, unused_lifetimes)]
use itertools::Itertools; use itertools::Itertools;
use std::fs::File;
use std::io::{self, IsTerminal};
use std::path::PathBuf; use std::path::PathBuf;
use std::process::Command; use std::process::Command;
use std::time::SystemTime;
use test_utils::IS_RUSTC_TEST_SUITE; use test_utils::IS_RUSTC_TEST_SUITE;
use ui_test::Args;
mod test_utils; mod test_utils;
#[test] fn main() {
fn dogfood_clippy() {
if IS_RUSTC_TEST_SUITE { if IS_RUSTC_TEST_SUITE {
return; 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(); let mut failed_packages = Vec::new();
// "" is the root package
for package in [ for package in [
"", "./",
"clippy_dev", "clippy_dev",
"clippy_lints", "clippy_lints",
"clippy_utils", "clippy_utils",
@ -31,6 +49,7 @@ fn dogfood_clippy() {
"lintcheck", "lintcheck",
"rustc_tools_util", "rustc_tools_util",
] { ] {
println!("linting {package}");
if !run_clippy_for_package(package, &["-D", "clippy::all", "-D", "clippy::pedantic"]) { if !run_clippy_for_package(package, &["-D", "clippy::all", "-D", "clippy::pedantic"]) {
failed_packages.push(if package.is_empty() { "root" } else { package }); failed_packages.push(if package.is_empty() { "root" } else { package });
} }
@ -43,12 +62,8 @@ fn dogfood_clippy() {
); );
} }
#[test] fn collect_metadata() {
#[ignore] assert!(cfg!(feature = "internal"));
#[cfg(feature = "internal")]
fn run_metadata_collection_lint() {
use std::fs::File;
use std::time::SystemTime;
// Setup for validation // Setup for validation
let metadata_output_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("util/gh-pages/lints.json"); let metadata_output_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("util/gh-pages/lints.json");
@ -101,6 +116,10 @@ fn run_clippy_for_package(project: &str, args: &[&str]) -> bool {
.arg("--all-targets") .arg("--all-targets")
.arg("--all-features"); .arg("--all-features");
if !io::stdout().is_terminal() {
command.arg("-q");
}
if let Ok(dogfood_args) = std::env::var("__CLIPPY_DOGFOOD_ARGS") { if let Ok(dogfood_args) = std::env::var("__CLIPPY_DOGFOOD_ARGS") {
for arg in dogfood_args.split_whitespace() { for arg in dogfood_args.split_whitespace() {
command.arg(arg); command.arg(arg);
@ -119,11 +138,5 @@ fn run_clippy_for_package(project: &str, args: &[&str]) -> bool {
command.args(["-A", "unknown_lints"]); command.args(["-A", "unknown_lints"]);
} }
let output = command.output().unwrap(); command.status().unwrap().success()
println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
output.status.success()
} }