2007-08-12 00:50:25 +00:00
#!/usr/bin/perl
package output::plain ;
use Exporter ;
@ ISA = qw( Exporter ) ;
use strict ;
sub new ($$$$) {
my ( $ class , $ verbose , $ immediate , $ statistics ) = @ _ ;
my $ self = {
verbose = > $ verbose ,
immediate = > $ immediate ,
statistics = > $ statistics ,
test_output = > { } ,
2007-09-29 08:57:02 +00:00
suitesfailed = > []
2007-08-12 00:50:25 +00:00
} ;
bless ( $ self , $ class ) ;
}
sub output_msg ($$$) ;
sub start_testsuite ($$)
{
my ( $ self , $ state ) = @ _ ;
my $ out = "" ;
my $ duration = $ state - > { START_TIME } - $ self - > { statistics } - > { START_TIME } ;
$ out . = "[$state->{INDEX}/$state->{TOTAL} in " . $ duration . "s" ;
$ out . = sprintf ( ", %d errors" , $ self - > { statistics } - > { SUITES_FAIL } ) if ( $ self - > { statistics } - > { SUITES_FAIL } > 0 ) ;
$ out . = "] $state->{NAME}\n" ,
$ self - > { test_output } - > { $ state - > { NAME } } = "" unless ( $ self - > { verbose } ) ;
$ self - > output_msg ( $ state , "CMD: $state->{CMD}\n" ) ;
print $ out ;
}
sub output_msg ($$$)
{
my ( $ self , $ state , $ output ) = @ _ ;
if ( $ self - > { verbose } ) {
print $ output ;
} else {
$ self - > { test_output } - > { $ state - > { NAME } } . = $ output ;
}
}
2007-08-26 19:07:46 +00:00
sub control_msg ($$$)
{
my ( $ self , $ state , $ output ) = @ _ ;
$ self - > output_msg ( $ state , $ output ) ;
}
2007-08-12 00:50:25 +00:00
sub end_testsuite ($$$$$)
{
my ( $ self , $ state , $ expected_ret , $ ret , $ envlog ) = @ _ ;
my $ out = "" ;
2007-09-15 20:11:28 +00:00
$ self - > output_msg ( $ state , "ENVLOG: $envlog\n" ) if ( $ envlog ne "" ) ;
2007-08-12 00:50:25 +00:00
if ( $ ret != $ expected_ret ) {
$ self - > output_msg ( $ state , "ERROR: $ret\n" ) ;
}
if ( $ ret != $ expected_ret and $ self - > { immediate } and not $ self - > { verbose } ) {
$ out . = $ self - > { test_output } - > { $ state - > { NAME } } ;
}
print $ out ;
}
sub start_test ($$)
{
my ( $ state , $ testname ) = @ _ ;
}
2007-09-08 14:12:45 +00:00
sub end_test ($$$$$$)
2007-08-12 00:50:25 +00:00
{
2007-09-08 14:12:45 +00:00
my ( $ self , $ state , $ testname , $ result , $ unexpected , $ reason ) = @ _ ;
2007-10-02 15:53:26 +00:00
my $ append = "" ;
2007-09-08 14:12:45 +00:00
2007-10-02 15:53:26 +00:00
unless ( $ unexpected ) {
$ self - > { test_output } - > { $ state - > { NAME } } = "" ;
return ;
}
$ append = "UNEXPECTED($result): $testname\n" ;
$ self - > { test_output } - > { $ state - > { NAME } } . = $ append ;
if ( $ self - > { immediate } and not $ self - > { verbose } ) {
print $ self - > { test_output } - > { $ state - > { NAME } } ;
$ self - > { test_output } - > { $ state - > { NAME } } = "" ;
2007-09-08 14:12:45 +00:00
}
2007-08-12 00:50:25 +00:00
}
sub summary ($)
{
my ( $ self ) = @ _ ;
if ( not $ self - > { immediate } and not $ self - > { verbose } ) {
foreach ( @ { $ self - > { suitesfailed } } ) {
print "===============================================================================\n" ;
print "FAIL: $_\n" ;
print $ self - > { test_output } - > { $ _ } ;
print "\n" ;
}
}
2007-08-26 16:56:41 +00:00
if ( $ self - > { statistics } - > { SUITES_FAIL } == 0 ) {
my $ ok = $ self - > { statistics } - > { TESTS_EXPECTED_OK } +
$ self - > { statistics } - > { TESTS_EXPECTED_FAIL } ;
print "ALL OK ($ok tests in $self->{statistics}->{SUITES_OK} testsuites)\n" ;
} else {
print "FAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n" ;
}
2007-08-12 00:50:25 +00:00
}
sub missing_env ($$$)
{
my ( $ self , $ name , $ envname ) = @ _ ;
print "FAIL: $name (ENV[$envname] not available!)\n" ;
}
2007-08-31 13:24:59 +00:00
sub skip_testsuite ($$$)
2007-08-12 04:00:15 +00:00
{
2007-09-02 00:24:38 +00:00
my ( $ self , $ envname , $ name , $ reason ) = @ _ ;
2007-08-12 04:00:15 +00:00
2007-09-02 00:24:38 +00:00
if ( $ reason ) {
print "SKIPPED: $name [$reason]\n" ;
} else {
print "SKIPPED: $name\n" ;
}
2007-08-12 04:00:15 +00:00
}
2007-08-12 00:50:25 +00:00
1 ;