@@ -48,12 +48,14 @@ fn start(argc: int, argv: **u8) -> int {
4848
4949pub fn main ( ) {
5050 let args = os:: args ( ) ;
51- let config = parse_config ( args. move_iter ( ) . collect ( ) ) ;
51+ let config = parse_config ( args. move_iter ( )
52+ . map ( |x| x. to_strbuf ( ) )
53+ . collect ( ) ) ;
5254 log_config ( & config) ;
5355 run_tests ( & config) ;
5456}
5557
56- pub fn parse_config ( args : Vec < ~ str > ) -> Config {
58+ pub fn parse_config ( args : Vec < StrBuf > ) -> Config {
5759
5860 let groups : Vec < getopts:: OptGroup > =
5961 vec ! ( reqopt( "" , "compile-lib-path" , "path to host shared libraries" , "PATH" ) ,
@@ -91,15 +93,15 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
9193 assert ! ( !args. is_empty( ) ) ;
9294 let argv0 = ( * args. get ( 0 ) ) . clone ( ) ;
9395 let args_ = args. tail ( ) ;
94- if * args. get ( 1 ) == "-h" . to_owned ( ) || * args. get ( 1 ) == "--help" . to_owned ( ) {
96+ if args. get ( 1 ) . as_slice ( ) == "-h" || args. get ( 1 ) . as_slice ( ) == "--help" {
9597 let message = format ! ( "Usage: {} [OPTIONS] [TESTNAME...]" , argv0) ;
9698 println ! ( "{}" , getopts:: usage( message, groups. as_slice( ) ) ) ;
9799 println ! ( "" ) ;
98100 fail ! ( )
99101 }
100102
101103 let matches =
102- & match getopts:: getopts ( args_, groups. as_slice ( ) ) {
104+ & match getopts:: getopts ( args_. as_slice ( ) , groups. as_slice ( ) ) {
103105 Ok ( m) => m,
104106 Err ( f) => fail ! ( "{}" , f. to_err_msg( ) )
105107 } ;
@@ -129,39 +131,53 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
129131 } ;
130132
131133 Config {
132- compile_lib_path : matches. opt_str ( "compile-lib-path" ) . unwrap ( ) ,
133- run_lib_path : matches. opt_str ( "run-lib-path" ) . unwrap ( ) ,
134+ compile_lib_path : matches. opt_str ( "compile-lib-path" )
135+ . unwrap ( )
136+ . to_strbuf ( ) ,
137+ run_lib_path : matches. opt_str ( "run-lib-path" ) . unwrap ( ) . to_strbuf ( ) ,
134138 rustc_path : opt_path ( matches, "rustc-path" ) ,
135139 clang_path : matches. opt_str ( "clang-path" ) . map ( |s| Path :: new ( s) ) ,
136140 llvm_bin_path : matches. opt_str ( "llvm-bin-path" ) . map ( |s| Path :: new ( s) ) ,
137141 src_base : opt_path ( matches, "src-base" ) ,
138142 build_base : opt_path ( matches, "build-base" ) ,
139143 aux_base : opt_path ( matches, "aux-base" ) ,
140- stage_id : matches. opt_str ( "stage-id" ) . unwrap ( ) ,
141- mode : FromStr :: from_str ( matches. opt_str ( "mode" ) . unwrap ( ) ) . expect ( "invalid mode" ) ,
144+ stage_id : matches. opt_str ( "stage-id" ) . unwrap ( ) . to_strbuf ( ) ,
145+ mode : FromStr :: from_str ( matches. opt_str ( "mode" )
146+ . unwrap ( )
147+ . as_slice ( ) ) . expect ( "invalid mode" ) ,
142148 run_ignored : matches. opt_present ( "ignored" ) ,
143149 filter : filter,
144150 logfile : matches. opt_str ( "logfile" ) . map ( |s| Path :: new ( s) ) ,
145151 save_metrics : matches. opt_str ( "save-metrics" ) . map ( |s| Path :: new ( s) ) ,
146152 ratchet_metrics :
147153 matches. opt_str ( "ratchet-metrics" ) . map ( |s| Path :: new ( s) ) ,
148154 ratchet_noise_percent :
149- matches. opt_str ( "ratchet-noise-percent" ) . and_then ( |s| from_str :: < f64 > ( s) ) ,
150- runtool : matches. opt_str ( "runtool" ) ,
151- host_rustcflags : matches. opt_str ( "host-rustcflags" ) ,
152- target_rustcflags : matches. opt_str ( "target-rustcflags" ) ,
155+ matches. opt_str ( "ratchet-noise-percent" )
156+ . and_then ( |s| from_str :: < f64 > ( s. as_slice ( ) ) ) ,
157+ runtool : matches. opt_str ( "runtool" ) . map ( |x| x. to_strbuf ( ) ) ,
158+ host_rustcflags : matches. opt_str ( "host-rustcflags" )
159+ . map ( |x| x. to_strbuf ( ) ) ,
160+ target_rustcflags : matches. opt_str ( "target-rustcflags" )
161+ . map ( |x| x. to_strbuf ( ) ) ,
153162 jit : matches. opt_present ( "jit" ) ,
154- target : opt_str2 ( matches. opt_str ( "target" ) ) . to_str ( ) ,
155- host : opt_str2 ( matches. opt_str ( "host" ) ) . to_str ( ) ,
163+ target : opt_str2 ( matches. opt_str ( "target" ) . map ( |x| x . to_strbuf ( ) ) ) ,
164+ host : opt_str2 ( matches. opt_str ( "host" ) . map ( |x| x . to_strbuf ( ) ) ) ,
156165 android_cross_path : opt_path ( matches, "android-cross-path" ) ,
157- adb_path : opt_str2 ( matches. opt_str ( "adb-path" ) ) . to_str ( ) ,
158- adb_test_dir :
159- opt_str2 ( matches. opt_str ( "adb-test-dir" ) ) . to_str ( ) ,
166+ adb_path : opt_str2 ( matches. opt_str ( "adb-path" )
167+ . map ( |x| x. to_strbuf ( ) ) ) ,
168+ adb_test_dir : opt_str2 ( matches. opt_str ( "adb-test-dir" )
169+ . map ( |x| x. to_strbuf ( ) ) ) ,
160170 adb_device_status :
161- "arm-linux-androideabi" == opt_str2 ( matches. opt_str ( "target" ) ) &&
162- "(none)" != opt_str2 ( matches. opt_str ( "adb-test-dir" ) ) &&
163- !opt_str2 ( matches. opt_str ( "adb-test-dir" ) ) . is_empty ( ) ,
164- lldb_python_dir : matches. opt_str ( "lldb-python-dir" ) ,
171+ "arm-linux-androideabi" ==
172+ opt_str2 ( matches. opt_str ( "target" )
173+ . map ( |x| x. to_strbuf ( ) ) ) . as_slice ( ) &&
174+ "(none)" !=
175+ opt_str2 ( matches. opt_str ( "adb-test-dir" )
176+ . map ( |x| x. to_strbuf ( ) ) ) . as_slice ( ) &&
177+ !opt_str2 ( matches. opt_str ( "adb-test-dir" )
178+ . map ( |x| x. to_strbuf ( ) ) ) . is_empty ( ) ,
179+ lldb_python_dir : matches. opt_str ( "lldb-python-dir" )
180+ . map ( |x| x. to_strbuf ( ) ) ,
165181 test_shard : test:: opt_shard ( matches. opt_str ( "test-shard" )
166182 . map ( |x| x. to_strbuf ( ) ) ) ,
167183 verbose : matches. opt_present ( "verbose" )
@@ -170,50 +186,59 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
170186
171187pub fn log_config ( config : & Config ) {
172188 let c = config;
173- logv ( c, format ! ( "configuration:" ) ) ;
174- logv ( c, format ! ( "compile_lib_path: {}" , config. compile_lib_path) ) ;
175- logv ( c, format ! ( "run_lib_path: {}" , config. run_lib_path) ) ;
176- logv ( c, format ! ( "rustc_path: {}" , config. rustc_path. display( ) ) ) ;
177- logv ( c, format ! ( "src_base: {}" , config. src_base. display( ) ) ) ;
178- logv ( c, format ! ( "build_base: {}" , config. build_base. display( ) ) ) ;
179- logv ( c, format ! ( "stage_id: {}" , config. stage_id) ) ;
180- logv ( c, format ! ( "mode: {}" , config. mode) ) ;
181- logv ( c, format ! ( "run_ignored: {}" , config. run_ignored) ) ;
182- logv ( c, format ! ( "filter: {}" , opt_str( & config. filter. as_ref( ) . map( |re| re. to_str( ) ) ) ) ) ;
183- logv ( c, format ! ( "runtool: {}" , opt_str( & config. runtool) ) ) ;
184- logv ( c, format ! ( "host-rustcflags: {}" , opt_str( & config. host_rustcflags) ) ) ;
185- logv ( c, format ! ( "target-rustcflags: {}" , opt_str( & config. target_rustcflags) ) ) ;
186- logv ( c, format ! ( "jit: {}" , config. jit) ) ;
187- logv ( c, format ! ( "target: {}" , config. target) ) ;
188- logv ( c, format ! ( "host: {}" , config. host) ) ;
189- logv ( c, format ! ( "android-cross-path: {}" , config. android_cross_path. display( ) ) ) ;
190- logv ( c, format ! ( "adb_path: {}" , config. adb_path) ) ;
191- logv ( c, format ! ( "adb_test_dir: {}" , config. adb_test_dir) ) ;
192- logv ( c, format ! ( "adb_device_status: {}" , config. adb_device_status) ) ;
189+ logv ( c, format_strbuf ! ( "configuration:" ) ) ;
190+ logv ( c, format_strbuf ! ( "compile_lib_path: {}" , config. compile_lib_path) ) ;
191+ logv ( c, format_strbuf ! ( "run_lib_path: {}" , config. run_lib_path) ) ;
192+ logv ( c, format_strbuf ! ( "rustc_path: {}" , config. rustc_path. display( ) ) ) ;
193+ logv ( c, format_strbuf ! ( "src_base: {}" , config. src_base. display( ) ) ) ;
194+ logv ( c, format_strbuf ! ( "build_base: {}" , config. build_base. display( ) ) ) ;
195+ logv ( c, format_strbuf ! ( "stage_id: {}" , config. stage_id) ) ;
196+ logv ( c, format_strbuf ! ( "mode: {}" , config. mode) ) ;
197+ logv ( c, format_strbuf ! ( "run_ignored: {}" , config. run_ignored) ) ;
198+ logv ( c, format_strbuf ! ( "filter: {}" ,
199+ opt_str( & config. filter
200+ . as_ref( )
201+ . map( |re| {
202+ re. to_str( ) . into_strbuf( )
203+ } ) ) ) ) ;
204+ logv ( c, format_strbuf ! ( "runtool: {}" , opt_str( & config. runtool) ) ) ;
205+ logv ( c, format_strbuf ! ( "host-rustcflags: {}" ,
206+ opt_str( & config. host_rustcflags) ) ) ;
207+ logv ( c, format_strbuf ! ( "target-rustcflags: {}" ,
208+ opt_str( & config. target_rustcflags) ) ) ;
209+ logv ( c, format_strbuf ! ( "jit: {}" , config. jit) ) ;
210+ logv ( c, format_strbuf ! ( "target: {}" , config. target) ) ;
211+ logv ( c, format_strbuf ! ( "host: {}" , config. host) ) ;
212+ logv ( c, format_strbuf ! ( "android-cross-path: {}" ,
213+ config. android_cross_path. display( ) ) ) ;
214+ logv ( c, format_strbuf ! ( "adb_path: {}" , config. adb_path) ) ;
215+ logv ( c, format_strbuf ! ( "adb_test_dir: {}" , config. adb_test_dir) ) ;
216+ logv ( c, format_strbuf ! ( "adb_device_status: {}" ,
217+ config. adb_device_status) ) ;
193218 match config. test_shard {
194- None => logv ( c, "test_shard: (all)" . to_owned ( ) ) ,
195- Some ( ( a, b) ) => logv ( c, format ! ( "test_shard: {}.{}" , a, b) )
219+ None => logv ( c, "test_shard: (all)" . to_strbuf ( ) ) ,
220+ Some ( ( a, b) ) => logv ( c, format_strbuf ! ( "test_shard: {}.{}" , a, b) )
196221 }
197- logv ( c, format ! ( "verbose: {}" , config. verbose) ) ;
198- logv ( c, format ! ( "\n " ) ) ;
222+ logv ( c, format_strbuf ! ( "verbose: {}" , config. verbose) ) ;
223+ logv ( c, format_strbuf ! ( "\n " ) ) ;
199224}
200225
201- pub fn opt_str < ' a > ( maybestr : & ' a Option < ~ str > ) -> & ' a str {
226+ pub fn opt_str < ' a > ( maybestr : & ' a Option < StrBuf > ) -> & ' a str {
202227 match * maybestr {
203228 None => "(none)" ,
204- Some ( ref s) => {
205- let s: & ' a str = * s;
206- s
207- }
229+ Some ( ref s) => s. as_slice ( ) ,
208230 }
209231}
210232
211- pub fn opt_str2 ( maybestr : Option < ~str > ) -> ~str {
212- match maybestr { None => "(none)" . to_owned ( ) , Some ( s) => { s } }
233+ pub fn opt_str2 ( maybestr : Option < StrBuf > ) -> StrBuf {
234+ match maybestr {
235+ None => "(none)" . to_strbuf ( ) ,
236+ Some ( s) => s,
237+ }
213238}
214239
215240pub fn run_tests ( config : & Config ) {
216- if config. target == "arm-linux-androideabi" . to_owned ( ) {
241+ if config. target . as_slice ( ) == "arm-linux-androideabi" {
217242 match config. mode {
218243 DebugInfoGdb => {
219244 println ! ( "arm-linux-androideabi debug-info \
@@ -321,11 +346,11 @@ pub fn make_test(config: &Config, testfile: &Path, f: || -> test::TestFn)
321346pub fn make_test_name ( config : & Config , testfile : & Path ) -> test:: TestName {
322347
323348 // Try to elide redundant long paths
324- fn shorten ( path : & Path ) -> ~ str {
349+ fn shorten ( path : & Path ) -> StrBuf {
325350 let filename = path. filename_str ( ) ;
326351 let p = path. dir_path ( ) ;
327352 let dir = p. filename_str ( ) ;
328- format ! ( "{}/{}" , dir. unwrap_or( "" ) , filename. unwrap_or( "" ) )
353+ format_strbuf ! ( "{}/{}" , dir. unwrap_or( "" ) , filename. unwrap_or( "" ) )
329354 }
330355
331356 test:: DynTestName ( format_strbuf ! ( "[{}] {}" ,
@@ -336,14 +361,16 @@ pub fn make_test_name(config: &Config, testfile: &Path) -> test::TestName {
336361pub fn make_test_closure ( config : & Config , testfile : & Path ) -> test:: TestFn {
337362 let config = ( * config) . clone ( ) ;
338363 // FIXME (#9639): This needs to handle non-utf8 paths
339- let testfile = testfile. as_str ( ) . unwrap ( ) . to_owned ( ) ;
340- test:: DynTestFn ( proc ( ) { runtest:: run ( config, testfile) } )
364+ let testfile = testfile. as_str ( ) . unwrap ( ) . to_strbuf ( ) ;
365+ test:: DynTestFn ( proc ( ) {
366+ runtest:: run ( config, testfile)
367+ } )
341368}
342369
343370pub fn make_metrics_test_closure ( config : & Config , testfile : & Path ) -> test:: TestFn {
344371 let config = ( * config) . clone ( ) ;
345372 // FIXME (#9639): This needs to handle non-utf8 paths
346- let testfile = testfile. as_str ( ) . unwrap ( ) . to_owned ( ) ;
373+ let testfile = testfile. as_str ( ) . unwrap ( ) . to_strbuf ( ) ;
347374 test:: DynMetricFn ( proc ( mm) {
348375 runtest:: run_metrics ( config, testfile, mm)
349376 } )
0 commit comments