diff options
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm')
-rw-r--r-- | systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm index 1b8ee87a65..54782decf4 100644 --- a/systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm +++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/TAP/Harness.pm @@ -16,11 +16,11 @@ TAP::Harness - Run test scripts with statistics =head1 VERSION -Version 3.43 +Version 3.44 =cut -our $VERSION = '3.43'; +our $VERSION = '3.44'; $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_VERSION} = $VERSION; @@ -555,8 +555,11 @@ sub runtests { $self->_make_callback( 'after_runtests', $aggregate ); }; my $run = sub { - $self->aggregate_tests( $aggregate, @tests ); + my $bailout; + eval { $self->aggregate_tests( $aggregate, @tests ); 1 } + or do { $bailout = $@ || 'unknown_error' }; $finish->(); + die $bailout if defined $bailout; }; if ( $self->trap ) { @@ -595,7 +598,12 @@ sub _after_test { } sub _bailout { - my ( $self, $result ) = @_; + my ( $self, $result, $parser, $session, $aggregate, $job ) = @_; + + $self->finish_parser( $parser, $session ); + $self->_after_test( $aggregate, $job, $parser ); + $job->finish; + my $explanation = $result->explanation; die "FAILED--Further testing stopped" . ( $explanation ? ": $explanation\n" : ".\n" ); @@ -629,7 +637,8 @@ sub _aggregate_parallel { my ( $session, $job ) = @$stash; if ( defined $result ) { $session->result($result); - $self->_bailout($result) if $result->is_bailout; + $self->_bailout($result, $parser, $session, $aggregate, $job ) + if $result->is_bailout; } else { @@ -661,7 +670,7 @@ sub _aggregate_single { # Keep reading until input is exhausted in the hope # of allowing any pending diagnostics to show up. 1 while $parser->next; - $self->_bailout($result); + $self->_bailout($result, $parser, $session, $aggregate, $job ); } } |