@@ -19,7 +19,7 @@ use std::os;
19
19
use std:: f64;
20
20
21
21
use extra:: getopts;
22
- use extra:: getopts:: groups:: { optopt, optflag, reqopt} ;
22
+ use extra:: getopts:: groups:: { optopt, optflag, reqopt, optmulti } ;
23
23
use extra:: test;
24
24
25
25
use common:: config;
@@ -49,19 +49,19 @@ pub fn main() {
49
49
pub fn parse_config ( args : ~[ ~str ] ) -> config {
50
50
51
51
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 \
65
65
(eg. emulator, valgrind)", "PROGRAM" ) ,
66
66
optopt ( "" , "rustcflags" , "flags to pass to rustc" , "FLAGS" ) ,
67
67
optflag ( "" , "verbose" , "run tests verbosely, showing all output" ) ,
@@ -105,14 +105,16 @@ pub fn parse_config(args: ~[~str]) -> config {
105
105
fn opt_path ( m : & getopts:: Matches , nm : & str ) -> Path {
106
106
Path ( getopts:: opt_str ( m, nm) )
107
107
}
108
+
109
+ let src_base = getopts:: opt_strs ( matches, "src-base" ) ;
108
110
109
111
config {
110
112
compile_lib_path : getopts:: opt_str ( matches, "compile-lib-path" ) ,
111
113
run_lib_path : getopts:: opt_str ( matches, "run-lib-path" ) ,
112
114
rustc_path : opt_path ( matches, "rustc-path" ) ,
113
115
clang_path : getopts:: opt_maybe_str ( matches, "clang-path" ) . map_move ( |s| Path ( s) ) ,
114
116
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 ( ) ,
116
118
build_base : opt_path ( matches, "build-base" ) ,
117
119
aux_base : opt_path ( matches, "aux-base" ) ,
118
120
stage_id : getopts:: opt_str ( matches, "stage-id" ) ,
@@ -248,7 +250,7 @@ pub fn make_tests(config: &config) -> ~[test::TestDescAndFn] {
248
250
debug ! ( "making tests from %s" ,
249
251
config. src_base. to_str( ) ) ;
250
252
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 ( ) ;
252
254
for file in dirs. iter ( ) {
253
255
let file = file. clone ( ) ;
254
256
debug ! ( "inspecting file %s" , file. to_str( ) ) ;
0 commit comments