summaryrefslogtreecommitdiff
path: root/source4/selftest/selftest.pl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/selftest/selftest.pl')
-rwxr-xr-xsource4/selftest/selftest.pl36
1 files changed, 25 insertions, 11 deletions
diff --git a/source4/selftest/selftest.pl b/source4/selftest/selftest.pl
index a10baebcf4..b0b53a16f1 100755
--- a/source4/selftest/selftest.pl
+++ b/source4/selftest/selftest.pl
@@ -156,7 +156,8 @@ my $statistics = {
TESTS_EXPECTED_OK => 0,
TESTS_UNEXPECTED_FAIL => 0,
TESTS_EXPECTED_FAIL => 0,
- TESTS_ERROR => 0
+ TESTS_ERROR => 0,
+ TESTS_SKIP => 0,
};
sub expecting_failure($)
@@ -218,45 +219,58 @@ sub parse_subunit_results($$$$)
my $open_tests = {};
while(<$fh>) {
- $msg_ops->output_msg($msg_state, $_);
if (/^test: (.+)\n/) {
+ $msg_ops->control_msg($msg_state, $_);
$open_tests->{$1} = 1;
$msg_ops->start_test($msg_state, $1);
- } elsif (/^(success|failure|skip|error): (.*?)( \[)?\n/) {
+ } elsif (/^(success|failure|skip|error): (.*?)( \[)?([ \t]*)\n/) {
+ $msg_ops->control_msg($msg_state, $_);
+ my $reason = undef;
+ if ($3) {
+ $reason = "";
+ # reason may be specified in next lines
+ while(<$fh>) {
+ $msg_ops->control_msg($msg_state, $_);
+ if ($_ eq "]\n") { last; } else { $reason .= $_; }
+ }
+ }
my $result = $1;
if ($1 eq "success") {
delete $open_tests->{$2};
if (expecting_failure("$msg_state->{NAME}/$2")) {
$statistics->{TESTS_UNEXPECTED_OK}++;
- $msg_ops->end_test($msg_state, $2, $1, 1);
+ $msg_ops->end_test($msg_state, $2, $1, 1, $reason);
} else {
$statistics->{TESTS_EXPECTED_OK}++;
- $msg_ops->end_test($msg_state, $2, $1, 0);
+ $msg_ops->end_test($msg_state, $2, $1, 0, $reason);
}
} elsif ($1 eq "failure") {
delete $open_tests->{$2};
if (expecting_failure("$msg_state->{NAME}/$2")) {
$statistics->{TESTS_EXPECTED_FAIL}++;
- $msg_ops->end_test($msg_state, $2, $1, 0);
+ $msg_ops->end_test($msg_state, $2, $1, 0, $reason);
$expected_ret = 0;
} else {
$statistics->{TESTS_UNEXPECTED_FAIL}++;
- $msg_ops->end_test($msg_state, $2, $1, 1);
+ $msg_ops->end_test($msg_state, $2, $1, 1, $reason);
}
} elsif ($1 eq "skip") {
+ $statistics->{TESTS_SKIP}++;
delete $open_tests->{$2};
- $msg_ops->end_test($msg_state, $2, $1, 0);
+ $msg_ops->end_test($msg_state, $2, $1, 0, $reason);
} elsif ($1 eq "error") {
$statistics->{TESTS_ERROR}++;
delete $open_tests->{$2};
- $msg_ops->end_test($msg_state, $2, $1, 1);
+ $msg_ops->end_test($msg_state, $2, $1, 1, $reason);
}
+ } else {
+ $msg_ops->output_msg($msg_state, $_);
}
}
foreach (keys %$open_tests) {
- $msg_ops->end_test($msg_state, $_, "error", 1);
- $msg_ops->output_msg($msg_state, "$_ was started but never finished!");
+ $msg_ops->end_test($msg_state, $_, "error", 1,
+ "was started but never finished!");
$statistics->{TESTS_ERROR}++;
}