Skip to content

Commit

Permalink
Rollup merge of #103958 - chenyukang:yukang/fix-103951-count-limit, r…
Browse files Browse the repository at this point in the history
…=jyn514

Test tidy should not count untracked paths towards entries limit

Fixes #103951
r? `@jyn514`
  • Loading branch information
matthiaskrgr committed Nov 4, 2022
2 parents f7ed72d + 18511ba commit 82d7de8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 26 deletions.
1 change: 1 addition & 0 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4937,6 +4937,7 @@ name = "tidy"
version = "0.1.0"
dependencies = [
"cargo_metadata 0.14.0",
"ignore",
"lazy_static",
"miropt-test-tools",
"regex",
Expand Down
1 change: 1 addition & 0 deletions src/tools/tidy/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ regex = "1"
miropt-test-tools = { path = "../miropt-test-tools" }
lazy_static = "1"
walkdir = "2"
ignore = "0.4.18"

[[bin]]
name = "rust-tidy"
Expand Down
59 changes: 33 additions & 26 deletions src/tools/tidy/src/ui_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
//! - the number of entries in each directory must be less than `ENTRY_LIMIT`
//! - there are no stray `.stderr` files

use ignore::Walk;
use ignore::WalkBuilder;
use std::fs;
use std::path::Path;

Expand All @@ -11,34 +13,39 @@ const ROOT_ENTRY_LIMIT: usize = 941;
const ISSUES_ENTRY_LIMIT: usize = 2117;

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();
for dir in Walk::new(&path.join("test/ui")) {
if let Ok(entry) = dir {
if entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false) {
let dir_path = entry.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
};

// 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 = WalkBuilder::new(&dir_path)
.max_depth(Some(1))
.build()
.into_iter()
.collect::<Vec<_>>()
.len()
- 1; // remove the dir itself

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()
);
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()
);
}
}
}
}
Expand Down

0 comments on commit 82d7de8

Please sign in to comment.