@@ -19,7 +19,7 @@ use std::os;
1919use std:: f64;
2020
2121use extra:: getopts;
22- use extra:: getopts:: groups:: { optopt, optflag, reqopt} ;
22+ use extra:: getopts:: groups:: { optopt, optflag, reqopt, optmulti } ;
2323use extra:: test;
2424
2525use common:: config;
@@ -49,19 +49,19 @@ pub fn main() {
4949pub fn parse_config ( args : ~[ ~str ] ) -> config {
5050
5151 let groups : ~[ getopts:: groups:: OptGroup ] =
52- ~[ reqopt ( "" , "compile-lib-path" , "path to host shared libraries" , "PATH" ) ,
53- reqopt ( "" , "run-lib-path" , "path to target shared libraries" , "PATH" ) ,
54- reqopt ( "" , "rustc-path" , "path to rustc to use for compiling" , "PATH" ) ,
55- optopt ( "" , "clang-path" , "path to executable for codegen tests" , "PATH" ) ,
56- optopt ( "" , "llvm-bin-path" , "path to directory holding llvm binaries" , "DIR" ) ,
57- reqopt ( "" , "src-base" , "directory to scan for test files" , "PATH" ) ,
58- reqopt ( "" , "build-base" , "directory to deposit test outputs" , "PATH" ) ,
59- reqopt ( "" , "aux-base" , "directory to find auxiliary test files" , "PATH" ) ,
60- reqopt ( "" , "stage-id" , "the target-stage identifier" , "stageN-TARGET" ) ,
61- reqopt ( "" , "mode" , "which sort of compile tests to run" ,
62- " (compile-fail|run-fail|run-pass|pretty|debug-info)") ,
63- optflag ( "" , "ignored" , "run tests marked as ignored / xfailed" ) ,
64- optopt ( "" , "runtool" , "supervisor program to run tests under \
52+ ~[ reqopt ( "" , "compile-lib-path" , "path to host shared libraries" , "PATH" ) ,
53+ reqopt ( "" , "run-lib-path" , "path to target shared libraries" , "PATH" ) ,
54+ reqopt ( "" , "rustc-path" , "path to rustc to use for compiling" , "PATH" ) ,
55+ optopt ( "" , "clang-path" , "path to executable for codegen tests" , "PATH" ) ,
56+ optopt ( "" , "llvm-bin-path" , "path to directory holding llvm binaries" , "DIR" ) ,
57+ optmulti ( "" , "src-base" , "directory to scan for test files" , "PATH" ) ,
58+ reqopt ( "" , "build-base" , "directory to deposit test outputs" , "PATH" ) ,
59+ reqopt ( "" , "aux-base" , "directory to find auxiliary test files" , "PATH" ) ,
60+ reqopt ( "" , "stage-id" , "the target-stage identifier" , "stageN-TARGET" ) ,
61+ reqopt ( "" , "mode" , "which sort of compile tests to run" ,
62+ " (compile-fail|run-fail|run-pass|pretty|debug-info)") ,
63+ optflag ( "" , "ignored" , "run tests marked as ignored / xfailed" ) ,
64+ optopt ( "" , "runtool" , "supervisor program to run tests under \
6565 (eg. emulator, valgrind)", "PROGRAM" ) ,
6666 optopt ( "" , "rustcflags" , "flags to pass to rustc" , "FLAGS" ) ,
6767 optflag ( "" , "verbose" , "run tests verbosely, showing all output" ) ,
@@ -106,13 +106,15 @@ pub fn parse_config(args: ~[~str]) -> config {
106106 Path ( getopts:: opt_str ( m, nm) )
107107 }
108108
109+ let src_base = getopts:: opt_strs ( matches, "src-base" ) ;
110+
109111 config {
110112 compile_lib_path : getopts:: opt_str ( matches, "compile-lib-path" ) ,
111113 run_lib_path : getopts:: opt_str ( matches, "run-lib-path" ) ,
112114 rustc_path : opt_path ( matches, "rustc-path" ) ,
113115 clang_path : getopts:: opt_maybe_str ( matches, "clang-path" ) . map_move ( |s| Path ( s) ) ,
114116 llvm_bin_path : getopts:: opt_maybe_str ( matches, "llvm-bin-path" ) . map_move ( |s| Path ( s) ) ,
115- src_base : opt_path ( matches , "src-base" ) ,
117+ src_base : src_base . iter ( ) . map ( |x| Path ( x . clone ( ) ) ) . collect ( ) ,
116118 build_base : opt_path ( matches, "build-base" ) ,
117119 aux_base : opt_path ( matches, "aux-base" ) ,
118120 stage_id : getopts:: opt_str ( matches, "stage-id" ) ,
@@ -248,7 +250,7 @@ pub fn make_tests(config: &config) -> ~[test::TestDescAndFn] {
248250 debug ! ( "making tests from %s" ,
249251 config. src_base. to_str( ) ) ;
250252 let mut tests = ~[ ] ;
251- let dirs = os:: list_dir_path ( & config . src_base ) ;
253+ let dirs = config . src_base . iter ( ) . flat_map ( |x| os:: list_dir_path ( x ) . move_iter ( ) ) . to_owned_vec ( ) ;
252254 for file in dirs. iter ( ) {
253255 let file = file. clone ( ) ;
254256 debug ! ( "inspecting file %s" , file. to_str( ) ) ;
0 commit comments