@@ -31,7 +31,7 @@ use std::time::SystemTime;
31
31
use std:: { env, fs, vec} ;
32
32
33
33
use build_helper:: git:: { get_git_modified_files, get_git_untracked_files} ;
34
- use camino:: { Utf8Path , Utf8PathBuf } ;
34
+ use camino:: { Utf8Component , Utf8Path , Utf8PathBuf } ;
35
35
use getopts:: Options ;
36
36
use rayon:: iter:: { ParallelBridge , ParallelIterator } ;
37
37
use tracing:: debug;
@@ -799,6 +799,23 @@ fn collect_tests_from_dir(
799
799
return Ok ( TestCollector :: new ( ) ) ;
800
800
}
801
801
802
+ let mut components = dir. components ( ) . rev ( ) ;
803
+ if let Some ( Utf8Component :: Normal ( last) ) = components. next ( )
804
+ && let Some ( ( "assembly" | "codegen" , backend) ) = last. split_once ( '-' )
805
+ && let Some ( Utf8Component :: Normal ( parent) ) = components. next ( )
806
+ && parent == "tests"
807
+ && let Ok ( backend) = CodegenBackend :: try_from ( backend)
808
+ && backend != cx. config . codegen_backend
809
+ {
810
+ // We ignore asm tests which don't match the current codegen backend.
811
+ warning ! (
812
+ "Ignoring tests in `{dir}` because they don't match the configured codegen \
813
+ backend (`{}`)",
814
+ cx. config. codegen_backend. as_str( ) ,
815
+ ) ;
816
+ return Ok ( TestCollector :: new ( ) ) ;
817
+ }
818
+
802
819
// For run-make tests, a "test file" is actually a directory that contains an `rmake.rs`.
803
820
if cx. config . mode == TestMode :: RunMake {
804
821
let mut collector = TestCollector :: new ( ) ;
0 commit comments