Skip to content

Commit

Permalink
Item1326: Display the unexpected passes or expected failures properly
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.foswiki.org/trunk@7301 0b4bb1d4-4e5a-0410-9cc4-b2b747904278
  • Loading branch information
OlivierRaginel authored and OlivierRaginel committed May 1, 2010
1 parent 0b80ec0 commit f35cde4
Showing 1 changed file with 33 additions and 41 deletions.
74 changes: 33 additions & 41 deletions UnitTestContrib/lib/Unit/TestRunner.pm
Expand Up @@ -9,7 +9,11 @@ use Error qw(:try);

sub new {
my $class = shift;
return bless( {}, $class );
return bless( {
unexpected_passes => [],
expected_failures => [],
failures => [],
}, $class );
}

sub start {
Expand Down Expand Up @@ -102,42 +106,35 @@ sub start {
$action = runOne($tester, $suite, $testToRun);
}
# untaint action for the case where the test is run in another process
($action) = $action =~ m/^(.*)$/ms;
($action) = $action =~ m/^(.*)$/ms;

eval $action;
die $@ if $@;
die "Test suite $suite aborted\n" unless $completed;
}
}

if ( $this->{unexpected_failures} || $this->{unexpected_passes} ) {
$this->{unexpected_failures} ||= 0;
$this->{unexpected_passes} ||= 0;
if ($this->{unexpected_failures}) {
print $this->{unexpected_failures} . " failure".
($this->{unexpected_failures}>1?'s':'').
"\n";
}
if ($this->{unexpected_passes}) {
print $this->{unexpected_passes} . " unexpected pass".
($this->{unexpected_passes}>1?'es':'').
"\n";
}
if (($passes + $this->{unexpected_failures}) > 1) {
#don't print the failure a second time if there is only one test run - its really annoying.
print join( "\n---------------------------\n", @{ $this->{failures} } ),
"\n";
}
print "$passes of ", $passes + $this->{unexpected_failures},
" test cases passed\n";
return scalar( @{ $this->{failures} } );
my $total = $passes;
my $failed;
if ( $failed = scalar @{ $this->{unexpected_passes} } ) {
print "$failed unexpected pass". ($failed>1?'es':''). ":\n";
print join( "\n", @{ $this->{unexpected_passes} } );
$total += $failed;
}
else {
print $this->{expected_failures} . " expected failures\n"
if $this->{expected_failures};
print "All tests passed ($passes)\n";
return 0;
if ( $failed = scalar @{ $this->{expected_failures} } ) {
print "$failed expected failure". ($failed>1?'s':''). ":\n";
print join( "\n", @{ $this->{expected_failures} } );
$total += $failed;
}
if( $failed = scalar @{ $this->{failures} } ) {
print "\n$failed failure". ($failed>1?'s':''). ":\n";
print join( "\n---------------------------\n", @{ $this->{failures} } ), "\n";
$total += $failed;
print "$passes of $total test cases passed\n";
return $failed;
}
print "All tests passed ($passes" .($passes == $total ? '' : "/$total").")\n";
return 0;
}

sub runOneInNewProcess
Expand Down Expand Up @@ -172,7 +169,7 @@ sub runOneInNewProcess
print "*** Could not spawn new process for $suite: $error\n";
return 'push( @{ $this->{failures} }, "'
. $suite
. '\n'
. '\n'
. quotemeta( $error )
. '" );';
}
Expand All @@ -184,7 +181,7 @@ sub runOneInNewProcess
unlink $tempfilename;
return 'push( @{ $this->{failures} }, "Process for '
. $suite
. ' returned '
. ' returned '
. $returnCode
. '" );';
}
Expand Down Expand Up @@ -291,26 +288,21 @@ sub runOne
$action .= '$passes++;';
if ( $tester->{expect_failure} ) {
print "*** Unexpected pass\n";
$action .= '$this->{unexpected_passes}++;'
. 'push( @{ $this->{failures} }, "'
. quotemeta( $test )
. '\\nUnexpected pass" );';
$action .= 'push( @{ $this->{unexpected_passes} }, "'
. quotemeta( $test );
}
}
catch Error with {
my $e = shift;
print "*** ", $e->stringify(), "\n";
if ( $tester->{expect_failure} ) {
$action .= '$this->{expected_failures}++;';
$action .= 'push( @{ $this->{expected_failures} }, "';
}
else {
$action .= '$this->{unexpected_failures}++;';
$action .= 'push( @{ $this->{failures} }, "';
}
$action .= 'push( @{ $this->{failures} }, "'
. quotemeta( $test )
. '\\n'
. quotemeta( $e->stringify() )
. '" );';
$action .= quotemeta( $test ) . '\\n'
. quotemeta( $e->stringify() ) . '" );';
};
$tester->tear_down();
}
Expand Down

0 comments on commit f35cde4

Please sign in to comment.