selftest: Fix unexpected failure handline in Subunit/Filter.pm
authorStefan Metzmacher <metze@sernet.private>
Mon, 16 Nov 2009 15:27:39 +0000 (16:27 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 17 Nov 2009 08:00:46 +0000 (09:00 +0100)
We should only mark the testsuite as expected failure,
if there were more than 1 expected failure, but 0 unexpected
failures.

Before we ignored unexpected failures if there was an expected failure
within a testsuite.

metze

selftest/Subunit/Filter.pm

index 93b690df8ee7c5db4b1263480c3f8bb56a5e2918..b7df762b1aef9c5a00e23bd4b6a7e399081671ed 100644 (file)
@@ -95,6 +95,10 @@ sub end_test($$$$$)
                $reason .= $xfail_reason;
        }
 
+       if ($result eq "fail" or $result eq "failure") {
+               $self->{fail_added}++;
+       }
+
        if ($self->{strip_ok_output}) {
                unless ($result eq "success" or $result eq "xfail" or $result eq "skip") {
                        print $self->{output}
@@ -115,16 +119,18 @@ sub start_testsuite($;$)
 {
        my ($self, $name) = @_;
        Subunit::start_testsuite($name);
+       $self->{fail_added} = 0;
        $self->{xfail_added} = 0;
 }
 
 sub end_testsuite($$;$)
 {
        my ($self, $name, $result, $reason) = @_;
-       if ($self->{xfail_added} and ($result eq "fail" or $result eq "failure")) {
+       if ($self->{fail_added} == 0 and $self->{xfail_added} and
+           ($result eq "fail" or $result eq "failure")) {
                $result = "xfail";
        }
-               
+
        Subunit::end_testsuite($name, $result, $reason);
 }