@@ -48,12 +48,14 @@ fn start(argc: int, argv: **u8) -> int {
48
48
49
49
pub fn main ( ) {
50
50
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 ( ) ) ;
52
54
log_config ( & config) ;
53
55
run_tests ( & config) ;
54
56
}
55
57
56
- pub fn parse_config ( args : Vec < ~ str > ) -> Config {
58
+ pub fn parse_config ( args : Vec < StrBuf > ) -> Config {
57
59
58
60
let groups : Vec < getopts:: OptGroup > =
59
61
vec ! ( reqopt( "" , "compile-lib-path" , "path to host shared libraries" , "PATH" ) ,
@@ -91,15 +93,15 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
91
93
assert ! ( !args. is_empty( ) ) ;
92
94
let argv0 = ( * args. get ( 0 ) ) . clone ( ) ;
93
95
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" {
95
97
let message = format ! ( "Usage: {} [OPTIONS] [TESTNAME...]" , argv0) ;
96
98
println ! ( "{}" , getopts:: usage( message, groups. as_slice( ) ) ) ;
97
99
println ! ( "" ) ;
98
100
fail ! ( )
99
101
}
100
102
101
103
let matches =
102
- & match getopts:: getopts ( args_, groups. as_slice ( ) ) {
104
+ & match getopts:: getopts ( args_. as_slice ( ) , groups. as_slice ( ) ) {
103
105
Ok ( m) => m,
104
106
Err ( f) => fail ! ( "{}" , f. to_err_msg( ) )
105
107
} ;
@@ -129,39 +131,53 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
129
131
} ;
130
132
131
133
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 ( ) ,
134
138
rustc_path : opt_path ( matches, "rustc-path" ) ,
135
139
clang_path : matches. opt_str ( "clang-path" ) . map ( |s| Path :: new ( s) ) ,
136
140
llvm_bin_path : matches. opt_str ( "llvm-bin-path" ) . map ( |s| Path :: new ( s) ) ,
137
141
src_base : opt_path ( matches, "src-base" ) ,
138
142
build_base : opt_path ( matches, "build-base" ) ,
139
143
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" ) ,
142
148
run_ignored : matches. opt_present ( "ignored" ) ,
143
149
filter : filter,
144
150
logfile : matches. opt_str ( "logfile" ) . map ( |s| Path :: new ( s) ) ,
145
151
save_metrics : matches. opt_str ( "save-metrics" ) . map ( |s| Path :: new ( s) ) ,
146
152
ratchet_metrics :
147
153
matches. opt_str ( "ratchet-metrics" ) . map ( |s| Path :: new ( s) ) ,
148
154
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 ( ) ) ,
153
162
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 ( ) ) ) ,
156
165
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 ( ) ) ) ,
160
170
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 ( ) ) ,
165
181
test_shard : test:: opt_shard ( matches. opt_str ( "test-shard" )
166
182
. map ( |x| x. to_strbuf ( ) ) ) ,
167
183
verbose : matches. opt_present ( "verbose" )
@@ -170,50 +186,59 @@ pub fn parse_config(args: Vec<~str> ) -> Config {
170
186
171
187
pub fn log_config ( config : & Config ) {
172
188
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) ) ;
193
218
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) )
196
221
}
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 " ) ) ;
199
224
}
200
225
201
- pub fn opt_str < ' a > ( maybestr : & ' a Option < ~ str > ) -> & ' a str {
226
+ pub fn opt_str < ' a > ( maybestr : & ' a Option < StrBuf > ) -> & ' a str {
202
227
match * maybestr {
203
228
None => "(none)" ,
204
- Some ( ref s) => {
205
- let s: & ' a str = * s;
206
- s
207
- }
229
+ Some ( ref s) => s. as_slice ( ) ,
208
230
}
209
231
}
210
232
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
+ }
213
238
}
214
239
215
240
pub fn run_tests ( config : & Config ) {
216
- if config. target == "arm-linux-androideabi" . to_owned ( ) {
241
+ if config. target . as_slice ( ) == "arm-linux-androideabi" {
217
242
match config. mode {
218
243
DebugInfoGdb => {
219
244
println ! ( "arm-linux-androideabi debug-info \
@@ -321,11 +346,11 @@ pub fn make_test(config: &Config, testfile: &Path, f: || -> test::TestFn)
321
346
pub fn make_test_name ( config : & Config , testfile : & Path ) -> test:: TestName {
322
347
323
348
// Try to elide redundant long paths
324
- fn shorten ( path : & Path ) -> ~ str {
349
+ fn shorten ( path : & Path ) -> StrBuf {
325
350
let filename = path. filename_str ( ) ;
326
351
let p = path. dir_path ( ) ;
327
352
let dir = p. filename_str ( ) ;
328
- format ! ( "{}/{}" , dir. unwrap_or( "" ) , filename. unwrap_or( "" ) )
353
+ format_strbuf ! ( "{}/{}" , dir. unwrap_or( "" ) , filename. unwrap_or( "" ) )
329
354
}
330
355
331
356
test:: DynTestName ( format_strbuf ! ( "[{}] {}" ,
@@ -336,14 +361,16 @@ pub fn make_test_name(config: &Config, testfile: &Path) -> test::TestName {
336
361
pub fn make_test_closure ( config : & Config , testfile : & Path ) -> test:: TestFn {
337
362
let config = ( * config) . clone ( ) ;
338
363
// 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
+ } )
341
368
}
342
369
343
370
pub fn make_metrics_test_closure ( config : & Config , testfile : & Path ) -> test:: TestFn {
344
371
let config = ( * config) . clone ( ) ;
345
372
// 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 ( ) ;
347
374
test:: DynMetricFn ( proc ( mm) {
348
375
runtest:: run_metrics ( config, testfile, mm)
349
376
} )
0 commit comments