while (<LF>) {
chomp;
next if (/^#/);
+ next if (/^$/);
if (/^(.*?)([ \t]+)\#([\t ]*)(.*?)$/) {
push (@ret, [$1, $4]);
} else {
sub output_msg($$)
{
my ($self, $msg) = @_;
- print $msg;
+ unless(defined($self->{output})) {
+ print $msg;
+ } else {
+ $self->{output}.=$msg;
+ }
}
sub start_test($$)
$testname = $self->{prefix}.$testname;
}
+ if ($self->{strip_ok_output}) {
+ $self->{output} = "";
+ }
+
Subunit::start_test($testname);
}
if (($result eq "fail" or $result eq "failure") and not $unexpected) {
$result = "xfail";
$self->{xfail_added}++;
+ $self->{total_xfail}++;
}
my $xfail_reason = find_in_list($self->{expected_failures}, $testname);
if (defined($xfail_reason) and ($result eq "fail" or $result eq "failure")) {
$result = "xfail";
$self->{xfail_added}++;
+ $self->{total_xfail}++;
$reason .= $xfail_reason;
}
+ if ($result eq "fail" or $result eq "failure") {
+ $self->{fail_added}++;
+ $self->{total_fail}++;
+ }
+
+ if ($result eq "error") {
+ $self->{error_added}++;
+ $self->{total_error}++;
+ }
+
+ if ($self->{strip_ok_output}) {
+ unless ($result eq "success" or $result eq "xfail" or $result eq "skip") {
+ print $self->{output}
+ }
+ }
+ $self->{output} = undef;
+
Subunit::end_test($testname, $result, $reason);
}
{
my ($self, $name) = @_;
Subunit::start_testsuite($name);
+
+ $self->{error_added} = 0;
+ $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")) {
+ my $xfail = 0;
+
+ $xfail = 1 if ($self->{xfail_added} > 0);
+ $xfail = 0 if ($self->{fail_added} > 0);
+ $xfail = 0 if ($self->{error_added} > 0);
+
+ if ($xfail and ($result eq "fail" or $result eq "failure")) {
$result = "xfail";
}
-
+
+ if ($self->{fail_added} > 0 and $result ne "failure") {
+ $result = "failure";
+ $reason = "Subunit/Filer Reason" unless defined($reason);
+ $reason .= "\n failures[$self->{fail_added}]";
+ }
+
+ if ($self->{error_added} > 0 and $result ne "error") {
+ $result = "error";
+ $reason = "Subunit/Filer Reason" unless defined($reason);
+ $reason .= "\n errors[$self->{error_added}]";
+ }
+
Subunit::end_testsuite($name, $result, $reason);
}
}
sub new {
- my ($class, $prefix, $expected_failures) = @_;
+ my ($class, $prefix, $expected_failures, $strip_ok_output) = @_;
my $self = {
prefix => $prefix,
expected_failures => $expected_failures,
+ strip_ok_output => $strip_ok_output,
xfail_added => 0,
+ total_xfail => 0,
+ total_error => 0,
+ total_fail => 0
};
bless($self, $class);
}