@@ -42,7 +42,6 @@ fn config() -> Config {
4242 "--suite=ui" ,
4343 "--compile-lib-path=" ,
4444 "--run-lib-path=" ,
45- "--rustc-path=" ,
4645 "--python=" ,
4746 "--jsondocck-path=" ,
4847 "--src-base=" ,
@@ -57,7 +56,9 @@ fn config() -> Config {
5756 "--target=x86_64-unknown-linux-gnu" ,
5857 "--channel=nightly" ,
5958 ] ;
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 ( ) ) ) ;
6162 crate :: parse_config ( args)
6263}
6364
@@ -237,13 +238,20 @@ fn sanitizers() {
237238
238239#[ test]
239240fn 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+ }
247255}
248256
249257#[ test]
@@ -281,3 +289,135 @@ fn test_duplicate_revisions() {
281289 let config = config ( ) ;
282290 parse_rs ( & config, "// revisions: rpass1 rpass1" ) ;
283291}
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