@@ -553,17 +553,47 @@ fn test_duplicate_revisions() {
553553 parse_rs ( & config, "//@ revisions: rpass1 rpass1" ) ;
554554}
555555
556+ fn test_file_check_revisions ( ) {
557+ let revisions = [ "CHECK" , "COM" , "NEXT" , "SAME" , "EMPTY" , "NOT" , "COUNT" , "DAG" , "LABEL" ] ;
558+ }
559+
556560#[ test]
557561fn test_forbidden_revisions ( ) {
558- let config: Config = cfg ( ) . build ( ) ;
559562 let revisions = [ "CHECK" , "COM" , "NEXT" , "SAME" , "EMPTY" , "NOT" , "COUNT" , "DAG" , "LABEL" ] ;
563+ let check_enforced_modes = [ "assembly" , "codegen" , "mir-opt" ] ;
564+ let check_skipped_modes = [
565+ "pretty" ,
566+ "debuginfo" ,
567+ "rustdoc" ,
568+ "rustdoc-json" ,
569+ "codegen-units" ,
570+ "incremental" ,
571+ "ui" ,
572+ "js-doc-test" ,
573+ "coverage-map" ,
574+ "coverage-run" ,
575+ "crashes" ,
576+ ] ;
577+
560578 for rev in revisions {
561- let res = std:: panic:: catch_unwind ( || {
562- parse_rs ( & config, format ! ( "//@ revisions: {rev}" ) . as_str ( ) ) ;
563- } ) ;
564- assert ! ( res. is_err( ) ) ;
565- if let Some ( msg) = res. unwrap_err ( ) . downcast_ref :: < String > ( ) {
566- assert ! ( msg. contains( format!( "invalid revision: `{rev}` in line ` {rev}`" ) . as_str( ) ) )
579+ let content = format ! ( "//@ revisions: {rev}" ) ;
580+ for mode in check_skipped_modes {
581+ let config = cfg ( ) . mode ( mode) . build ( ) ;
582+ parse_rs ( & config, & content) ;
583+ }
584+
585+ for mode in check_enforced_modes {
586+ let mut res = std:: panic:: catch_unwind ( || {
587+ let config = cfg ( ) . mode ( mode) . build ( ) ;
588+ parse_rs ( & config, & content) ;
589+ } ) ;
590+ assert ! ( res. is_err( ) ) ;
591+ assert ! (
592+ res. unwrap_err( )
593+ . downcast_ref:: <String >( )
594+ . unwrap( )
595+ . contains( format!( "revision name `{rev}` is not permitted in a test suite that uses `FileCheck` annotations" ) . as_str( ) )
596+ ) ;
567597 }
568598 }
569599}
0 commit comments