File tree Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Original file line number Diff line number Diff line change
1
+ //! Tidy check to ensure that there are no filenames containing forbidden characters
2
+ //! checked into the source tree by accident:
3
+ //! - Non-UTF8 filenames
4
+ //! - Control characters such as CR or TAB
5
+ //! - Filenames containing ":" as they are not supported on Windows
6
+ //!
7
+ //! Only files added to git are checked, as it may be acceptable to have temporary
8
+ //! invalid filenames in the local directory during development.
9
+
10
+ use std:: path:: Path ;
11
+ use std:: process:: Command ;
12
+
13
+ pub fn check ( root_path : & Path , bad : & mut bool ) {
14
+ let stat_output = Command :: new ( "git" )
15
+ . arg ( "-C" )
16
+ . arg ( root_path)
17
+ . args ( [ "ls-files" , "-z" ] )
18
+ . output ( )
19
+ . unwrap ( )
20
+ . stdout ;
21
+ for filename in stat_output. split ( |& b| b == 0 ) {
22
+ match str:: from_utf8 ( filename) {
23
+ Err ( _) => tidy_error ! (
24
+ bad,
25
+ r#"non-UTF8 file names are not supported: "{}""# ,
26
+ String :: from_utf8_lossy( filename) ,
27
+ ) ,
28
+ Ok ( name) if name. chars ( ) . any ( |c| c. is_control ( ) ) => tidy_error ! (
29
+ bad,
30
+ r#"control characters are not supported in file names: "{}""# ,
31
+ String :: from_utf8_lossy( filename) ,
32
+ ) ,
33
+ Ok ( name) if name. contains ( ':' ) => tidy_error ! (
34
+ bad,
35
+ r#"":" is not supported in file names because of Windows compatibility: "{name}""# ,
36
+ ) ,
37
+ _ => ( ) ,
38
+ }
39
+ }
40
+ }
Original file line number Diff line number Diff line change @@ -167,6 +167,7 @@ pub mod error_codes;
167
167
pub mod ext_tool_checks;
168
168
pub mod extdeps;
169
169
pub mod features;
170
+ pub mod filenames;
170
171
pub mod fluent_alphabetical;
171
172
pub mod fluent_period;
172
173
mod fluent_used;
Original file line number Diff line number Diff line change @@ -155,6 +155,8 @@ fn main() {
155
155
156
156
check ! ( triagebot, & root_path) ;
157
157
158
+ check ! ( filenames, & root_path) ;
159
+
158
160
let collected = {
159
161
drain_handles ( & mut handles) ;
160
162
You can’t perform that action at this time.
0 commit comments