10 my ($class, $summaryfile, $verbose, $immediate, $statistics) = @_;
13 immediate => $immediate,
14 statistics => $statistics,
18 summaryfile => $summaryfile,
25 sub start_testsuite($$$)
27 my ($self, $name, $state) = @_;
30 my $duration = $state->{START_TIME} - $self->{statistics}->{START_TIME};
31 $out .= "[$state->{INDEX}/$state->{TOTAL} in ".$duration."s";
32 $out .= sprintf(", %d errors", $self->{statistics}->{SUITES_FAIL}) if ($self->{statistics}->{SUITES_FAIL} > 0);
35 $self->{test_output}->{$name} = "" unless($self->{verbose});
37 $self->output_msg($state, "CMD: $state->{CMD}\n");
44 my ($self, $state, $output) = @_;
46 if ($self->{verbose}) {
49 $self->{test_output}->{$state->{NAME}} .= $output;
55 my ($self, $state, $output) = @_;
57 $self->output_msg($state, $output);
60 sub end_testsuite($$$$$$)
62 my ($self, $name, $state, $expected_ret, $ret, $envlog) = @_;
65 $self->output_msg($state, "ENVLOG: $envlog\n") if ($envlog ne "");
67 if ($ret != $expected_ret) {
68 $self->output_msg($state, "ERROR: $ret\n");
71 if ($ret != $expected_ret and $self->{immediate} and not $self->{verbose}) {
72 $out .= $self->{test_output}->{$name};
73 push (@{$self->{suitesfailed}}, $name);
81 my ($state, $testname) = @_;
86 my ($self, $state, $testname, $result, $unexpected, $reason) = @_;
89 unless ($unexpected) {
90 $self->{test_output}->{$state->{NAME}} = "";
94 $append = "UNEXPECTED($result): $testname\n";
96 $self->{test_output}->{$state->{NAME}} .= $append;
98 if ($self->{immediate} and not $self->{verbose}) {
99 print $self->{test_output}->{$state->{NAME}};
100 $self->{test_output}->{$state->{NAME}} = "";
108 open(SUMMARY, ">$self->{summaryfile}");
110 if ($#{$self->{suitesfailed}} > -1) {
111 print SUMMARY "= Failed tests =\n";
113 foreach (@{$self->{suitesfailed}}) {
114 print SUMMARY "== $_ ==\n";
115 print SUMMARY $self->{test_output}->{$_}."\n\n";
121 if (not $self->{immediate} and not $self->{verbose}) {
122 foreach (@{$self->{suitesfailed}}) {
123 print "===============================================================================\n";
125 print $self->{test_output}->{$_};
130 print SUMMARY "= Skipped tests =\n";
131 foreach my $reason (keys %{$self->{skips}}) {
132 print SUMMARY "$reason\n";
133 foreach my $name (@{$self->{skips}->{$reason}}) {
134 print SUMMARY "\t$name\n";
140 print "\nA summary with detailed informations can be found in:\n $self->{summaryfile}\n";
142 if ($self->{statistics}->{SUITES_FAIL} == 0) {
143 my $ok = $self->{statistics}->{TESTS_EXPECTED_OK} +
144 $self->{statistics}->{TESTS_EXPECTED_FAIL};
145 print "\nALL OK ($ok tests in $self->{statistics}->{SUITES_OK} testsuites)\n";
147 print "\nFAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n";
152 sub skip_testsuite($$)
154 my ($self, $name, $reason) = @_;
156 push (@{$self->{skips}->{$reason}}, $name);