]>
git.proxmox.com Git - rustc.git/blob - src/tools/tidy/src/ui_tests.rs
1 //! Tidy check to ensure below in UI test directories:
2 //! - the number of entries in each directory must be less than `ENTRY_LIMIT`
3 //! - there are no stray `.stderr` files
8 const ENTRY_LIMIT
: usize = 1000;
9 // FIXME: The following limits should be reduced eventually.
10 const ROOT_ENTRY_LIMIT
: usize = 1580;
11 const ISSUES_ENTRY_LIMIT
: usize = 2830;
13 fn check_entries(path
: &Path
, bad
: &mut bool
) {
14 let dirs
= walkdir
::WalkDir
::new(&path
.join("test/ui"))
16 .filter_entry(|e
| e
.file_type().is_dir());
18 if let Ok(dir
) = dir
{
19 let dir_path
= dir
.path();
21 // Use special values for these dirs.
22 let is_root
= path
.join("test/ui") == dir_path
;
23 let is_issues_dir
= path
.join("test/ui/issues") == dir_path
;
24 let limit
= if is_root
{
26 } else if is_issues_dir
{
32 let count
= std
::fs
::read_dir(dir_path
).unwrap().count();
36 "following path contains more than {} entries, \
37 you should move the test to some relevant subdirectory (current: {}): {}",
47 pub fn check(path
: &Path
, bad
: &mut bool
) {
48 check_entries(&path
, bad
);
49 for path
in &[&path
.join("test/ui"), &path
.join("test/ui-fulldeps")] {
50 super::walk_no_read(path
, &mut |_
| false, &mut |entry
| {
51 let file_path
= entry
.path();
52 if let Some(ext
) = file_path
.extension() {
53 if ext
== "stderr" || ext
== "stdout" {
54 // Test output filenames have one of the formats:
57 // $testname.$mode.stderr
58 // $testname.$revision.stderr
59 // $testname.$revision.$mode.stderr
62 // For now, just make sure that there is a corresponding
63 // `$testname.rs` file.
65 // NB: We do not use file_stem() as some file names have multiple `.`s and we
66 // must strip all of them.
68 file_path
.file_name().unwrap().to_str().unwrap().split_once('
.'
).unwrap().0;
69 if !file_path
.with_file_name(testname
).with_extension("rs").exists() {
70 tidy_error
!(bad
, "Stray file with UI testing output: {:?}", file_path
);
73 if let Ok(metadata
) = fs
::metadata(file_path
) {
74 if metadata
.len() == 0 {
75 tidy_error
!(bad
, "Empty file with UI testing output: {:?}", file_path
);