@@ -6,7 +6,7 @@ use std::path::{Path, PathBuf};
6
6
7
7
use log:: * ;
8
8
9
- use crate :: common:: { self , CompareMode , Config , Mode } ;
9
+ use crate :: common:: { self , CompareMode , Config , Mode , ExtraMode } ;
10
10
use crate :: util;
11
11
12
12
use crate :: extract_gdb_version;
@@ -97,6 +97,12 @@ impl EarlyProps {
97
97
let rustc_has_profiler_support = env:: var_os ( "RUSTC_PROFILER_SUPPORT" ) . is_some ( ) ;
98
98
let rustc_has_sanitizer_support = env:: var_os ( "RUSTC_SANITIZER_SUPPORT" ) . is_some ( ) ;
99
99
100
+ if let Some ( fm) = & config. filter_mode {
101
+ if config. mode != Mode :: Ui && !fm. contains ( & ExtraMode :: Mode ( config. mode ) ) {
102
+ props. ignore = Ignore :: Ignore ;
103
+ }
104
+ }
105
+
100
106
iter_header ( testfile, None , & mut |ln| {
101
107
// we should check if any only-<platform> exists and if it exists
102
108
// and does not matches the current platform, skip the test
@@ -147,6 +153,22 @@ impl EarlyProps {
147
153
props. ignore = props. ignore . no_lldb ( ) ;
148
154
}
149
155
156
+ // Apply `--filter-mode` for ui tests.
157
+ if let ( Some ( fm) , Mode :: Ui ) = ( & config. filter_mode , config. mode ) {
158
+ let keep = fm. contains ( & ExtraMode :: Mode ( Mode :: Ui ) ) || {
159
+ let run = config. parse_run_pass ( ln) ;
160
+ let compile = config. parse_compile_pass ( ln) ;
161
+ match ( run, compile) {
162
+ ( true , _) => fm. contains ( & ExtraMode :: Mode ( Mode :: RunPass ) ) ,
163
+ ( _, true ) => fm. contains ( & ExtraMode :: CompilePass ) ,
164
+ ( _, _) => fm. contains ( & ExtraMode :: Mode ( Mode :: CompileFail ) ) ,
165
+ }
166
+ } ;
167
+ if !keep {
168
+ props. ignore = Ignore :: Ignore ;
169
+ }
170
+ }
171
+
150
172
if let Some ( s) = config. parse_aux_build ( ln) {
151
173
props. aux . push ( s) ;
152
174
}
0 commit comments