@@ -71,6 +71,7 @@ string_enum!(pub enum Comparison {
7171 Unknown => "unknown" ,
7272 Error => "error" ,
7373 Broken => "broken" ,
74+ PrepareFail => "prepare-fail" ,
7475 SameBuildFail => "build-fail" ,
7576 SameTestFail => "test-fail" ,
7677 SameTestSkipped => "test-skipped" ,
@@ -87,7 +88,8 @@ impl Comparison {
8788 | Comparison :: Unknown
8889 | Comparison :: Error
8990 | Comparison :: SpuriousRegressed
90- | Comparison :: SpuriousFixed => true ,
91+ | Comparison :: SpuriousFixed
92+ | Comparison :: PrepareFail => true ,
9193 Comparison :: Skipped
9294 | Comparison :: Broken
9395 | Comparison :: SameBuildFail
@@ -107,6 +109,7 @@ impl Comparison {
107109 | Comparison :: SpuriousFixed
108110 | Comparison :: Skipped
109111 | Comparison :: Broken
112+ | Comparison :: PrepareFail
110113 | Comparison :: SameBuildFail
111114 | Comparison :: SameTestFail
112115 | Comparison :: SameTestSkipped
@@ -406,7 +409,9 @@ fn gen_retry_list(res: &RawTestResults) -> String {
406409 . crates
407410 . iter ( )
408411 . filter ( |crate_res| {
409- crate_res. res == Comparison :: Regressed || crate_res. res == Comparison :: SpuriousRegressed
412+ crate_res. res == Comparison :: Regressed
413+ || crate_res. res == Comparison :: SpuriousRegressed
414+ || crate_res. res == Comparison :: PrepareFail
410415 } )
411416 . map ( |crate_res| & crate_res. krate ) ;
412417
@@ -486,53 +491,37 @@ fn compare(
486491 }
487492 ( BuildFail ( _) , BuildFail ( FailureReason :: ICE ) ) => Comparison :: Regressed ,
488493
494+ // same
489495 ( BuildFail ( _) , BuildFail ( _) ) => Comparison :: SameBuildFail ,
490- ( TestFail ( _) , TestFail ( _) ) => Comparison :: SameTestFail ,
491496 ( TestSkipped , TestSkipped ) => Comparison :: SameTestSkipped ,
497+ ( TestFail ( _) , TestFail ( _) ) => Comparison :: SameTestFail ,
492498 ( TestPass , TestPass ) => Comparison :: SameTestPass ,
493499
494- ( BuildFail ( ref reason1) , TestFail ( ref reason2) )
495- if reason1. is_spurious ( ) || reason2. is_spurious ( ) =>
496- {
497- Comparison :: SpuriousFixed
498- }
499- ( BuildFail ( ref reason) , TestSkipped )
500- | ( BuildFail ( ref reason) , TestPass )
501- | ( TestFail ( ref reason) , TestPass )
502- if reason. is_spurious ( ) =>
503- {
504- Comparison :: SpuriousFixed
505- }
506- ( BuildFail ( _) , TestFail ( _) )
507- | ( BuildFail ( _) , TestSkipped )
508- | ( BuildFail ( _) , TestPass )
509- | ( TestFail ( _) , TestPass ) => Comparison :: Fixed ,
510- ( TestFail ( _) , BuildFail ( reason) ) if !reason. is_spurious ( ) => Comparison :: Regressed ,
511- ( TestFail ( reason1) , BuildFail ( reason2) )
512- if reason1. is_spurious ( ) || reason2. is_spurious ( ) =>
513- {
514- Comparison :: SpuriousRegressed
500+ // (spurious) fixed
501+ ( BuildFail ( reason) , TestSkipped | TestFail ( _) | TestPass )
502+ | ( TestFail ( reason) , TestPass ) => {
503+ if reason. is_spurious ( ) {
504+ Comparison :: SpuriousFixed
505+ } else {
506+ Comparison :: Fixed
507+ }
515508 }
516- ( TestPass , TestFail ( reason) )
517- | ( TestPass , BuildFail ( reason) )
518- | ( TestSkipped , BuildFail ( reason) )
519- | ( TestFail ( _) , BuildFail ( reason) )
520- if reason. is_spurious ( ) =>
521- {
522- Comparison :: SpuriousRegressed
509+
510+ // (spurious) regressed
511+ ( TestSkipped | TestFail ( _) | TestPass , BuildFail ( reason) )
512+ | ( TestPass , TestFail ( reason) ) => {
513+ if reason. is_spurious ( ) {
514+ Comparison :: SpuriousRegressed
515+ } else {
516+ Comparison :: Regressed
517+ }
523518 }
524- ( TestPass , TestFail ( _) )
525- | ( TestPass , BuildFail ( _) )
526- | ( TestSkipped , BuildFail ( _) )
527- | ( TestFail ( _) , BuildFail ( _) ) => Comparison :: Regressed ,
528519
520+ ( PrepareFail ( _) , _) | ( _, PrepareFail ( _) ) => Comparison :: PrepareFail ,
529521 ( Error , _) | ( _, Error ) => Comparison :: Error ,
530522 ( Skipped , _) | ( _, Skipped ) => Comparison :: Skipped ,
531523 ( BrokenCrate ( _) , _) | ( _, BrokenCrate ( _) ) => Comparison :: Broken ,
532- ( TestFail ( _) , TestSkipped )
533- | ( TestPass , TestSkipped )
534- | ( TestSkipped , TestFail ( _) )
535- | ( TestSkipped , TestPass ) => {
524+ ( TestFail ( _) | TestPass , TestSkipped ) | ( TestSkipped , TestFail ( _) | TestPass ) => {
536525 panic ! ( "can't compare {res1} and {res2}" ) ;
537526 }
538527 } ,
@@ -821,6 +810,7 @@ mod tests {
821810
822811 // Non-spurious fixes/regressions
823812 BuildFail ( Unknown ) , TestFail ( Unknown ) => Fixed ;
813+ BuildFail ( Unknown ) , TestFail ( OOM ) => Fixed ;
824814 BuildFail ( Unknown ) , TestSkipped => Fixed ;
825815 BuildFail ( Unknown ) , TestPass => Fixed ;
826816 TestFail ( Unknown ) , TestPass => Fixed ;
@@ -837,7 +827,6 @@ mod tests {
837827
838828 // Spurious fixes/regressions
839829 BuildFail ( OOM ) , TestFail ( Unknown ) => SpuriousFixed ;
840- BuildFail ( Unknown ) , TestFail ( OOM ) => SpuriousFixed ;
841830 BuildFail ( OOM ) , TestSkipped => SpuriousFixed ;
842831 BuildFail ( OOM ) , TestPass => SpuriousFixed ;
843832 TestFail ( OOM ) , TestPass => SpuriousFixed ;
@@ -846,6 +835,10 @@ mod tests {
846835 TestSkipped , BuildFail ( OOM ) => SpuriousRegressed ;
847836 TestFail ( Unknown ) , BuildFail ( OOM ) => SpuriousRegressed ;
848837
838+ // PrepareFail
839+ PrepareFail ( Unknown ) , BuildFail ( Unknown ) => PrepareFail ;
840+ BuildFail ( Unknown ) , PrepareFail ( Unknown ) => PrepareFail ;
841+
849842 // Errors
850843 Error , TestPass => Error ;
851844 Error , TestSkipped => Error ;
0 commit comments