3 use std::path::{Path, PathBuf};
7 use clippy_dev::clippy_project_root;
9 // The maximum length allowed for stderr files.
11 // We limit this because small files are easier to deal with than bigger files.
12 const LENGTH_LIMIT: usize = 200;
15 let exceeding_files: Vec<_> = exceeding_stderr_files();
17 if !exceeding_files.is_empty() {
18 eprintln!("Error: stderr files exceeding limit of {} lines:", LENGTH_LIMIT);
19 for (path, count) in exceeding_files {
20 println!("{}: {}", path.display(), count);
22 std::process::exit(1);
26 fn exceeding_stderr_files() -> Vec<(PathBuf, usize)> {
27 // We use `WalkDir` instead of `fs::read_dir` here in order to recurse into subdirectories.
28 WalkDir::new(clippy_project_root().join("tests/ui"))
30 .filter_map(Result::ok)
31 .filter(|f| !f.file_type().is_dir())
33 let p = e.into_path();
34 let count = count_linenumbers(&p);
35 if p.extension() == Some(OsStr::new("stderr")) && count > LENGTH_LIMIT {
45 fn count_linenumbers(filepath: &Path) -> usize {
46 match fs::read(filepath) {
47 Ok(content) => bytecount::count(&content, b'\n'),
49 eprintln!("Failed to read file: {}", e);