@@ -769,7 +769,7 @@ pub fn old_find_testable_code(doc: &str, tests: &mut ::test::Collector, position
769769 block_info. should_panic , block_info. no_run ,
770770 block_info. ignore , block_info. test_harness ,
771771 block_info. compile_fail , block_info. error_codes ,
772- line, filename) ;
772+ line, filename, block_info . allow_fail ) ;
773773 } else {
774774 tests. add_old_test ( text, filename) ;
775775 }
@@ -859,7 +859,7 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector, position: Sp
859859 block_info. should_panic , block_info. no_run ,
860860 block_info. ignore , block_info. test_harness ,
861861 block_info. compile_fail , block_info. error_codes ,
862- line, filename) ;
862+ line, filename, block_info . allow_fail ) ;
863863 prev_offset = offset;
864864 }
865865 Event :: Start ( Tag :: Header ( level) ) => {
@@ -889,6 +889,7 @@ struct LangString {
889889 test_harness : bool ,
890890 compile_fail : bool ,
891891 error_codes : Vec < String > ,
892+ allow_fail : bool ,
892893}
893894
894895impl LangString {
@@ -902,6 +903,7 @@ impl LangString {
902903 test_harness : false ,
903904 compile_fail : false ,
904905 error_codes : Vec :: new ( ) ,
906+ allow_fail : false ,
905907 }
906908 }
907909
@@ -930,6 +932,7 @@ impl LangString {
930932 }
931933 "no_run" => { data. no_run = true ; seen_rust_tags = !seen_other_tags; }
932934 "ignore" => { data. ignore = true ; seen_rust_tags = !seen_other_tags; }
935+ "allow_fail" => { data. allow_fail = true ; seen_rust_tags = !seen_other_tags; }
933936 "rust" => { data. rust = true ; seen_rust_tags = true ; }
934937 "test_harness" => {
935938 data. test_harness = true ;
@@ -1118,7 +1121,7 @@ mod tests {
11181121 fn test_lang_string_parse ( ) {
11191122 fn t ( s : & str ,
11201123 should_panic : bool , no_run : bool , ignore : bool , rust : bool , test_harness : bool ,
1121- compile_fail : bool , error_codes : Vec < String > ) {
1124+ compile_fail : bool , allow_fail : bool , error_codes : Vec < String > ) {
11221125 assert_eq ! ( LangString :: parse( s) , LangString {
11231126 should_panic: should_panic,
11241127 no_run: no_run,
@@ -1128,25 +1131,31 @@ mod tests {
11281131 compile_fail: compile_fail,
11291132 error_codes: error_codes,
11301133 original: s. to_owned( ) ,
1134+ allow_fail: allow_fail,
11311135 } )
11321136 }
11331137
1138+ fn v ( ) -> Vec < String > {
1139+ Vec :: new ( )
1140+ }
1141+
11341142 // marker | should_panic| no_run| ignore| rust | test_harness| compile_fail
1135- // | error_codes
1136- t ( "" , false , false , false , true , false , false , Vec :: new ( ) ) ;
1137- t ( "rust" , false , false , false , true , false , false , Vec :: new ( ) ) ;
1138- t ( "sh" , false , false , false , false , false , false , Vec :: new ( ) ) ;
1139- t ( "ignore" , false , false , true , true , false , false , Vec :: new ( ) ) ;
1140- t ( "should_panic" , true , false , false , true , false , false , Vec :: new ( ) ) ;
1141- t ( "no_run" , false , true , false , true , false , false , Vec :: new ( ) ) ;
1142- t ( "test_harness" , false , false , false , true , true , false , Vec :: new ( ) ) ;
1143- t ( "compile_fail" , false , true , false , true , false , true , Vec :: new ( ) ) ;
1144- t ( "{.no_run .example}" , false , true , false , true , false , false , Vec :: new ( ) ) ;
1145- t ( "{.sh .should_panic}" , true , false , false , false , false , false , Vec :: new ( ) ) ;
1146- t ( "{.example .rust}" , false , false , false , true , false , false , Vec :: new ( ) ) ;
1147- t ( "{.test_harness .rust}" , false , false , false , true , true , false , Vec :: new ( ) ) ;
1148- t ( "text, no_run" , false , true , false , false , false , false , Vec :: new ( ) ) ;
1149- t ( "text,no_run" , false , true , false , false , false , false , Vec :: new ( ) ) ;
1143+ // | allow_fail | error_codes
1144+ t ( "" , false , false , false , true , false , false , false , v ( ) ) ;
1145+ t ( "rust" , false , false , false , true , false , false , false , v ( ) ) ;
1146+ t ( "sh" , false , false , false , false , false , false , false , v ( ) ) ;
1147+ t ( "ignore" , false , false , true , true , false , false , false , v ( ) ) ;
1148+ t ( "should_panic" , true , false , false , true , false , false , false , v ( ) ) ;
1149+ t ( "no_run" , false , true , false , true , false , false , false , v ( ) ) ;
1150+ t ( "test_harness" , false , false , false , true , true , false , false , v ( ) ) ;
1151+ t ( "compile_fail" , false , true , false , true , false , true , false , v ( ) ) ;
1152+ t ( "allow_fail" , false , false , false , true , false , false , true , v ( ) ) ;
1153+ t ( "{.no_run .example}" , false , true , false , true , false , false , false , v ( ) ) ;
1154+ t ( "{.sh .should_panic}" , true , false , false , false , false , false , false , v ( ) ) ;
1155+ t ( "{.example .rust}" , false , false , false , true , false , false , false , v ( ) ) ;
1156+ t ( "{.test_harness .rust}" , false , false , false , true , true , false , false , v ( ) ) ;
1157+ t ( "text, no_run" , false , true , false , false , false , false , false , v ( ) ) ;
1158+ t ( "text,no_run" , false , true , false , false , false , false , false , v ( ) ) ;
11501159 }
11511160
11521161 #[ test]
0 commit comments