File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ use std:: fs:: { self , DirEntry } ;
2
+ use std:: io;
3
+ use std:: path:: Path ;
4
+
5
+ #[ test]
6
+ fn test_missing_tests ( ) {
7
+ explore_directory ( Path :: new ( "./tests" ) ) . unwrap ( ) ;
8
+ }
9
+
10
+ /*
11
+ Test for missing files.
12
+
13
+ Since rs files are alphabetically before stderr/stdout, we can sort by the full name
14
+ and iter in that order. If we've seen the file stem for the first time and it's not
15
+ a rust file, it means the rust file has to be missing.
16
+ */
17
+ fn explore_directory ( dir : & Path ) -> io:: Result < ( ) > {
18
+ let mut current_file = String :: new ( ) ;
19
+ let mut files: Vec < DirEntry > = fs:: read_dir ( dir) ?. filter_map ( Result :: ok) . collect ( ) ;
20
+ files. sort_by_key ( |e| e. path ( ) ) ;
21
+ for entry in files. iter ( ) {
22
+ let path = entry. path ( ) ;
23
+ if path. is_dir ( ) {
24
+ explore_directory ( & path) ?;
25
+ } else {
26
+ let file_stem = path. file_stem ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) . to_string ( ) ;
27
+ match path. extension ( ) {
28
+ Some ( ext) => {
29
+ match ext. to_str ( ) . unwrap ( ) {
30
+ "rs" => current_file = file_stem. clone ( ) ,
31
+ "stderr" | "stdout" => {
32
+ assert_eq ! (
33
+ file_stem,
34
+ current_file,
35
+ "{}" ,
36
+ format!( "Didn't see a test file for {:}" , path. to_str( ) . unwrap( ) )
37
+ ) ;
38
+ } ,
39
+ _ => continue ,
40
+ } ;
41
+ } ,
42
+ None => { } ,
43
+ }
44
+ }
45
+ }
46
+ Ok ( ( ) )
47
+ }
You can’t perform that action at this time.
0 commit comments