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