@@ -587,7 +587,7 @@ fn run(cli: Cli) -> ExitCode {
587587 entry :
588588 Entry {
589589 meta_props : properties,
590- reported : test_reported,
590+ reported : mut test_reported,
591591 } ,
592592 subtests : subtest_entries,
593593 } = test_entry;
@@ -611,6 +611,41 @@ fn run(cli: Cli) -> ExitCode {
611611
612612 let mut properties = properties. unwrap_or_default ( ) ;
613613
614+ for ( platform, build_profile, reported) in
615+ test_reported. iter_mut ( ) . flat_map ( |( p, by_bp) | {
616+ by_bp
617+ . iter_mut ( )
618+ . map ( move |( bp, reported) | ( p, bp, reported) )
619+ } )
620+ {
621+ let skip = TestOutcome :: Skip ;
622+ // Ignore `SKIP` outcomes if we have non-`SKIP` outcomes here.
623+ //
624+ // Do this so that test runs whose coverage _in aggregate_ includes actual
625+ // runs on this test are viable for processing. Otherwise, we'd have `SKIP`
626+ // outcomes be included that aren't actually wanted.
627+ if * reported != skip {
628+ let skip = skip. into ( ) ;
629+ if reported. inner ( ) . is_superset ( skip) {
630+ log:: debug!(
631+ concat!(
632+ "encountered `{}` among other outcomes " ,
633+ "in aggregation of reported test outcomes " ,
634+ "for {:?} with platform {:?} and build profile {:?}, " ,
635+ " removing with the assumption that " ,
636+ "this is an artifact of disjoint test runs"
637+ ) ,
638+ skip,
639+ test_path,
640+ platform,
641+ build_profile,
642+ ) ;
643+ * reported = Expected :: new ( reported. inner ( ) & !skip)
644+ . expect ( "internal error: empty non-`SKIP` superset" ) ;
645+ }
646+ }
647+ }
648+
614649 reconcile ( & mut properties, test_reported, preset) ;
615650
616651 let mut subtests = BTreeMap :: new ( ) ;
0 commit comments