@@ -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