@@ -42,7 +42,6 @@ fn config() -> Config {
42
42
"--suite=ui" ,
43
43
"--compile-lib-path=" ,
44
44
"--run-lib-path=" ,
45
- "--rustc-path=" ,
46
45
"--python=" ,
47
46
"--jsondocck-path=" ,
48
47
"--src-base=" ,
@@ -57,7 +56,9 @@ fn config() -> Config {
57
56
"--target=x86_64-unknown-linux-gnu" ,
58
57
"--channel=nightly" ,
59
58
] ;
60
- let args = args. iter ( ) . map ( ToString :: to_string) . collect ( ) ;
59
+ let mut args: Vec < String > = args. iter ( ) . map ( ToString :: to_string) . collect ( ) ;
60
+ args. push ( "--rustc-path" . to_string ( ) ) ;
61
+ args. push ( std:: env:: var ( "RUSTC" ) . unwrap_or_else ( |_| "rustc" . to_string ( ) ) ) ;
61
62
crate :: parse_config ( args)
62
63
}
63
64
@@ -237,13 +238,20 @@ fn sanitizers() {
237
238
238
239
#[ test]
239
240
fn asm_support ( ) {
240
- let mut config = config ( ) ;
241
-
242
- config. target = "avr-unknown-gnu-atmega328" . to_owned ( ) ;
243
- assert ! ( check_ignore( & config, "// needs-asm-support" ) ) ;
244
-
245
- config. target = "i686-unknown-netbsd" . to_owned ( ) ;
246
- assert ! ( !check_ignore( & config, "// needs-asm-support" ) ) ;
241
+ let asms = [
242
+ ( "avr-unknown-gnu-atmega328" , false ) ,
243
+ ( "i686-unknown-netbsd" , true ) ,
244
+ ( "riscv32gc-unknown-linux-gnu" , true ) ,
245
+ ( "riscv64imac-unknown-none-elf" , true ) ,
246
+ ( "x86_64-unknown-linux-gnu" , true ) ,
247
+ ( "i686-unknown-netbsd" , true ) ,
248
+ ] ;
249
+ for ( target, has_asm) in asms {
250
+ let mut config = config ( ) ;
251
+ config. target = target. to_string ( ) ;
252
+ assert_eq ! ( config. has_asm_support( ) , has_asm) ;
253
+ assert_eq ! ( check_ignore( & config, "// needs-asm-support" ) , !has_asm)
254
+ }
247
255
}
248
256
249
257
#[ test]
@@ -281,3 +289,135 @@ fn test_duplicate_revisions() {
281
289
let config = config ( ) ;
282
290
parse_rs ( & config, "// revisions: rpass1 rpass1" ) ;
283
291
}
292
+
293
+ #[ test]
294
+ fn ignore_arch ( ) {
295
+ let archs = [
296
+ ( "x86_64-unknown-linux-gnu" , "x86_64" ) ,
297
+ ( "i686-unknown-linux-gnu" , "x86" ) ,
298
+ ( "nvptx64-nvidia-cuda" , "nvptx64" ) ,
299
+ ( "asmjs-unknown-emscripten" , "wasm32" ) ,
300
+ ( "asmjs-unknown-emscripten" , "asmjs" ) ,
301
+ ( "thumbv7m-none-eabi" , "thumb" ) ,
302
+ ] ;
303
+ for ( target, arch) in archs {
304
+ let mut config = config ( ) ;
305
+ config. target = target. to_string ( ) ;
306
+ assert ! ( config. matches_arch( arch) , "{target} {arch}" ) ;
307
+ assert ! ( check_ignore( & config, & format!( "// ignore-{arch}" ) ) ) ;
308
+ }
309
+ }
310
+
311
+ #[ test]
312
+ fn matches_os ( ) {
313
+ let oss = [
314
+ ( "x86_64-unknown-linux-gnu" , "linux" ) ,
315
+ ( "x86_64-fortanix-unknown-sgx" , "unknown" ) ,
316
+ ( "wasm32-unknown-unknown" , "unknown" ) ,
317
+ ( "x86_64-unknown-none" , "none" ) ,
318
+ ] ;
319
+ for ( target, os) in oss {
320
+ let mut config = config ( ) ;
321
+ config. target = target. to_string ( ) ;
322
+ assert ! ( config. matches_os( os) , "{target} {os}" ) ;
323
+ assert ! ( check_ignore( & config, & format!( "// ignore-{os}" ) ) ) ;
324
+ }
325
+ }
326
+
327
+ #[ test]
328
+ fn matches_env ( ) {
329
+ let envs = [
330
+ ( "x86_64-unknown-linux-gnu" , "gnu" ) ,
331
+ ( "x86_64-fortanix-unknown-sgx" , "sgx" ) ,
332
+ ( "arm-unknown-linux-musleabi" , "musl" ) ,
333
+ ] ;
334
+ for ( target, env) in envs {
335
+ let mut config = config ( ) ;
336
+ config. target = target. to_string ( ) ;
337
+ assert ! ( config. matches_env( env) , "{target} {env}" ) ;
338
+ assert ! ( check_ignore( & config, & format!( "// ignore-{env}" ) ) ) ;
339
+ }
340
+ }
341
+
342
+ #[ test]
343
+ fn matches_abi ( ) {
344
+ let abis = [
345
+ ( "aarch64-apple-ios-macabi" , "macabi" ) ,
346
+ ( "x86_64-unknown-linux-gnux32" , "x32" ) ,
347
+ ( "arm-unknown-linux-gnueabi" , "eabi" ) ,
348
+ ] ;
349
+ for ( target, abi) in abis {
350
+ let mut config = config ( ) ;
351
+ config. target = target. to_string ( ) ;
352
+ assert ! ( config. matches_abi( abi) , "{target} {abi}" ) ;
353
+ assert ! ( check_ignore( & config, & format!( "// ignore-{abi}" ) ) ) ;
354
+ }
355
+ }
356
+
357
+ #[ test]
358
+ fn is_big_endian ( ) {
359
+ let endians = [
360
+ ( "x86_64-unknown-linux-gnu" , false ) ,
361
+ ( "bpfeb-unknown-none" , true ) ,
362
+ ( "m68k-unknown-linux-gnu" , true ) ,
363
+ ( "aarch64_be-unknown-linux-gnu" , true ) ,
364
+ ( "powerpc64-unknown-linux-gnu" , true ) ,
365
+ ] ;
366
+ for ( target, is_big) in endians {
367
+ let mut config = config ( ) ;
368
+ config. target = target. to_string ( ) ;
369
+ assert_eq ! ( config. is_big_endian( ) , is_big, "{target} {is_big}" ) ;
370
+ assert_eq ! ( check_ignore( & config, "// ignore-endian-big" ) , is_big) ;
371
+ }
372
+ }
373
+
374
+ #[ test]
375
+ fn pointer_width ( ) {
376
+ let widths = [
377
+ ( "x86_64-unknown-linux-gnu" , 64 ) ,
378
+ ( "i686-unknown-linux-gnu" , 32 ) ,
379
+ ( "arm64_32-apple-watchos" , 32 ) ,
380
+ ( "msp430-none-elf" , 16 ) ,
381
+ ] ;
382
+ for ( target, width) in widths {
383
+ let mut config = config ( ) ;
384
+ config. target = target. to_string ( ) ;
385
+ assert_eq ! ( config. get_pointer_width( ) , width, "{target} {width}" ) ;
386
+ assert_eq ! ( check_ignore( & config, "// ignore-16bit" ) , width == 16 ) ;
387
+ assert_eq ! ( check_ignore( & config, "// ignore-32bit" ) , width == 32 ) ;
388
+ assert_eq ! ( check_ignore( & config, "// ignore-64bit" ) , width == 64 ) ;
389
+ }
390
+ }
391
+
392
+ #[ test]
393
+ fn wasm_special ( ) {
394
+ let ignores = [
395
+ ( "wasm32-unknown-unknown" , "emscripten" , true ) ,
396
+ ( "wasm32-unknown-unknown" , "wasm32" , true ) ,
397
+ ( "wasm32-unknown-unknown" , "wasm32-bare" , true ) ,
398
+ ( "wasm32-unknown-unknown" , "wasm64" , false ) ,
399
+ ( "asmjs-unknown-emscripten" , "emscripten" , true ) ,
400
+ ( "asmjs-unknown-emscripten" , "wasm32" , true ) ,
401
+ ( "asmjs-unknown-emscripten" , "wasm32-bare" , false ) ,
402
+ ( "wasm32-unknown-emscripten" , "emscripten" , true ) ,
403
+ ( "wasm32-unknown-emscripten" , "wasm32" , true ) ,
404
+ ( "wasm32-unknown-emscripten" , "wasm32-bare" , false ) ,
405
+ ( "wasm32-wasi" , "emscripten" , false ) ,
406
+ ( "wasm32-wasi" , "wasm32" , true ) ,
407
+ ( "wasm32-wasi" , "wasm32-bare" , false ) ,
408
+ ( "wasm32-wasi" , "wasi" , true ) ,
409
+ ( "wasm64-unknown-unknown" , "emscripten" , false ) ,
410
+ ( "wasm64-unknown-unknown" , "wasm32" , false ) ,
411
+ ( "wasm64-unknown-unknown" , "wasm32-bare" , false ) ,
412
+ ( "wasm64-unknown-unknown" , "wasm64" , true ) ,
413
+ ] ;
414
+ for ( target, pattern, ignore) in ignores {
415
+ let mut config = config ( ) ;
416
+ config. target = target. to_string ( ) ;
417
+ assert_eq ! (
418
+ check_ignore( & config, & format!( "// ignore-{pattern}" ) ) ,
419
+ ignore,
420
+ "{target} {pattern}"
421
+ ) ;
422
+ }
423
+ }
0 commit comments