@@ -17,10 +17,10 @@ use tracing::*;
1717
1818use crate :: common:: {
1919 Assembly , Codegen , CodegenUnits , CompareMode , Config , CoverageMap , CoverageRun , Crashes ,
20- DebugInfo , Debugger , FailMode , Incremental , MirOpt , PassMode , Pretty , RunMake , Rustdoc ,
21- RustdocJs , RustdocJson , TestPaths , UI_EXTENSIONS , UI_FIXED , UI_RUN_STDERR , UI_RUN_STDOUT ,
22- UI_STDERR , UI_STDOUT , UI_SVG , UI_WINDOWS_SVG , Ui , expected_output_path, incremental_dir ,
23- output_base_dir, output_base_name, output_testname_unique,
20+ DebugInfo , Debugger , FailMode , Incremental , MirOpt , PassMode , Pretty , RunFailMode , RunMake ,
21+ Rustdoc , RustdocJs , RustdocJson , TestPaths , UI_EXTENSIONS , UI_FIXED , UI_RUN_STDERR ,
22+ UI_RUN_STDOUT , UI_STDERR , UI_STDOUT , UI_SVG , UI_WINDOWS_SVG , Ui , expected_output_path,
23+ incremental_dir , output_base_dir, output_base_name, output_testname_unique,
2424} ;
2525use crate :: compute_diff:: { DiffLine , make_diff, write_diff, write_filtered_diff} ;
2626use crate :: errors:: { Error , ErrorKind , load_errors} ;
@@ -277,7 +277,11 @@ impl<'test> TestCx<'test> {
277277
278278 fn should_run ( & self , pm : Option < PassMode > ) -> WillExecute {
279279 let test_should_run = match self . config . mode {
280- Ui if pm == Some ( PassMode :: Run ) || self . props . fail_mode == Some ( FailMode :: Run ) => true ,
280+ Ui if pm == Some ( PassMode :: Run )
281+ || matches ! ( self . props. fail_mode, Some ( FailMode :: Run ( _) ) ) =>
282+ {
283+ true
284+ }
281285 MirOpt if pm == Some ( PassMode :: Run ) => true ,
282286 Ui | MirOpt => false ,
283287 mode => panic ! ( "unimplemented for mode {:?}" , mode) ,
@@ -296,6 +300,13 @@ impl<'test> TestCx<'test> {
296300 }
297301 }
298302
303+ fn must_have_exit_code ( & self ) -> bool {
304+ match self . config . mode {
305+ Ui => self . props . fail_mode == Some ( FailMode :: Run ( RunFailMode :: FailureExitCode ) ) ,
306+ mode => panic ! ( "unimplemented for mode {:?}" , mode) ,
307+ }
308+ }
309+
299310 fn should_compile_successfully ( & self , pm : Option < PassMode > ) -> bool {
300311 match self . config . mode {
301312 RustdocJs => true ,
0 commit comments