2
2
//! - the number of entries in each directory must be less than `ENTRY_LIMIT`
3
3
//! - there are no stray `.stderr` files
4
4
5
- use std:: collections:: { BTreeSet , HashMap } ;
5
+ use std:: collections:: BTreeSet ;
6
6
use std:: ffi:: OsStr ;
7
7
use std:: fs;
8
8
use std:: io:: Write ;
9
9
use std:: path:: { Path , PathBuf } ;
10
10
11
- use ignore:: Walk ;
12
-
13
11
// FIXME: GitHub's UI truncates file lists that exceed 1000 entries, so these
14
12
// should all be 1000 or lower. Limits significantly smaller than 1000 are also
15
13
// desirable, because large numbers of files are unwieldy in general. See issue
16
14
// #73494.
17
- const ENTRY_LIMIT : u32 = 901 ;
18
- // FIXME: The following limits should be reduced eventually.
19
15
20
- const ISSUES_ENTRY_LIMIT : u32 = 1616 ;
16
+ // FIXME: The following limits should be reduced eventually.
21
17
22
18
const EXPECTED_TEST_FILE_EXTENSIONS : & [ & str ] = & [
23
19
"rs" , // test source files
@@ -54,50 +50,13 @@ const EXTENSION_EXCEPTION_PATHS: &[&str] = &[
54
50
"tests/ui/std/windows-bat-args3.bat" , // tests escaping arguments through batch files
55
51
] ;
56
52
57
- fn check_entries ( tests_path : & Path , bad : & mut bool ) {
58
- let mut directories: HashMap < PathBuf , u32 > = HashMap :: new ( ) ;
59
-
60
- for entry in Walk :: new ( tests_path. join ( "ui" ) ) . flatten ( ) {
61
- let parent = entry. path ( ) . parent ( ) . unwrap ( ) . to_path_buf ( ) ;
62
- * directories. entry ( parent) . or_default ( ) += 1 ;
63
- }
64
-
65
- let ( mut max, mut max_issues) = ( 0 , 0 ) ;
66
- for ( dir_path, count) in directories {
67
- let is_issues_dir = tests_path. join ( "ui/issues" ) == dir_path;
68
- let ( limit, maxcnt) = if is_issues_dir {
69
- ( ISSUES_ENTRY_LIMIT , & mut max_issues)
70
- } else {
71
- ( ENTRY_LIMIT , & mut max)
72
- } ;
73
- * maxcnt = ( * maxcnt) . max ( count) ;
74
- if count > limit {
75
- tidy_error ! (
76
- bad,
77
- "following path contains more than {} entries, \
78
- you should move the test to some relevant subdirectory (current: {}): {}",
79
- limit,
80
- count,
81
- dir_path. display( )
82
- ) ;
83
- }
84
- }
85
- if ISSUES_ENTRY_LIMIT > max_issues {
86
- tidy_error ! (
87
- bad,
88
- "`ISSUES_ENTRY_LIMIT` is too high (is {ISSUES_ENTRY_LIMIT}, should be {max_issues})"
89
- ) ;
90
- }
91
- }
92
-
93
53
pub fn check ( root_path : & Path , bless : bool , bad : & mut bool ) {
94
54
let issues_txt_header = r#"============================================================
95
55
⚠️⚠️⚠️NOTHING SHOULD EVER BE ADDED TO THIS LIST⚠️⚠️⚠️
96
56
============================================================
97
57
"# ;
98
58
99
59
let path = & root_path. join ( "tests" ) ;
100
- check_entries ( path, bad) ;
101
60
102
61
// the list of files in ui tests that are allowed to start with `issue-XXXX`
103
62
// BTreeSet because we would like a stable ordering so --bless works
@@ -124,7 +83,11 @@ pub fn check(root_path: &Path, bless: bool, bad: &mut bool) {
124
83
) ;
125
84
}
126
85
127
- let mut remaining_issue_names: BTreeSet < & str > = allowed_issue_names. clone ( ) ;
86
+ let mut remaining_issue_names: BTreeSet < & str > = allowed_issue_names
87
+ . clone ( )
88
+ . into_iter ( )
89
+ . filter ( |name| !name. starts_with ( "ui/issues/" ) )
90
+ . collect ( ) ;
128
91
129
92
let ( ui, ui_fulldeps) = ( path. join ( "ui" ) , path. join ( "ui-fulldeps" ) ) ;
130
93
let paths = [ ui. as_path ( ) , ui_fulldeps. as_path ( ) ] ;
@@ -179,7 +142,9 @@ pub fn check(root_path: &Path, bless: bool, bad: &mut bool) {
179
142
. unwrap ( )
180
143
. replace ( std:: path:: MAIN_SEPARATOR_STR , "/" ) ;
181
144
182
- if !remaining_issue_names. remove ( stripped_path. as_str ( ) ) {
145
+ if !remaining_issue_names. remove ( stripped_path. as_str ( ) )
146
+ && !stripped_path. starts_with ( "ui/issues/" )
147
+ {
183
148
tidy_error ! (
184
149
bad,
185
150
"file `tests/{stripped_path}` must begin with a descriptive name, consider `{{reason}}-issue-{issue_n}.rs`" ,
0 commit comments