Skip to content

Commit

Permalink
Check the number of entries in UI test
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Dec 14, 2020
1 parent 7feab00 commit adda964
Showing 1 changed file with 43 additions and 1 deletion.
44 changes: 43 additions & 1 deletion src/tools/tidy/src/ui_tests.rs
@@ -1,9 +1,51 @@
//! Tidy check to ensure that there are no stray `.stderr` files in UI test directories.
//! Tidy check to ensure below in UI test directories:
//! - the number of entries in each directory must be less than `ENTRY_LIMIT`
//! - there are no stray `.stderr` files

use std::fs;
use std::path::Path;

const ENTRY_LIMIT: usize = 1000;
// FIXME: The following limits should be reduced eventually.
const ROOT_ENTRY_LIMIT: usize = 1580;
const ISSUES_ENTRY_LIMIT: usize = 2830;

fn check_entries(path: &Path, bad: &mut bool) {
let dirs = walkdir::WalkDir::new(&path.join("test/ui"))
.into_iter()
.filter_entry(|e| e.file_type().is_dir());
for dir in dirs {
if let Ok(dir) = dir {
let dir_path = dir.path();

// Use special values for these dirs.
let is_root = path.join("test/ui") == dir_path;
let is_issues_dir = path.join("test/ui/issues") == dir_path;
let limit = if is_root {
ROOT_ENTRY_LIMIT
} else if is_issues_dir {
ISSUES_ENTRY_LIMIT
} else {
ENTRY_LIMIT
};

let count = std::fs::read_dir(dir_path).unwrap().count();
if count >= limit {
tidy_error!(
bad,
"following path contains more than {} entries, \
you should move the test to some relevant subdirectory (current: {}): {}",
limit,
count,
dir_path.display()
);
}
}
}
}

pub fn check(path: &Path, bad: &mut bool) {
check_entries(&path, bad);
for path in &[&path.join("test/ui"), &path.join("test/ui-fulldeps")] {
super::walk_no_read(path, &mut |_| false, &mut |entry| {
let file_path = entry.path();
Expand Down

0 comments on commit adda964

Please sign in to comment.