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;
167167pub mod ext_tool_checks;
168168pub mod extdeps;
169169pub mod features;
170+ pub mod filenames;
170171pub mod fluent_alphabetical;
171172pub mod fluent_period;
172173mod fluent_used;
Original file line number Diff line number Diff line change @@ -155,6 +155,8 @@ fn main() {
155155
156156 check ! ( triagebot, & root_path) ;
157157
158+ check ! ( filenames, & root_path) ;
159+
158160 let collected = {
159161 drain_handles ( & mut handles) ;
160162
You can’t perform that action at this time.
0 commit comments