1#!perl 2 3use strict; 4use warnings; 5use File::Spec; 6 7BEGIN { 8 *CORE::GLOBAL::exit = sub { die '!exit called!' }; 9} 10 11use TAP::Harness; 12use Test::More; 13 14my @jobs = ( 15 { name => 'sequential', 16 args => { verbosity => -9 }, 17 }, 18 { name => 'parallel', 19 args => { verbosity => -9, jobs => 2 }, 20 }, 21); 22 23plan tests => @jobs * 2; 24 25for my $test (@jobs) { 26 my $name = $test->{name}; 27 my $args = $test->{args}; 28 my $harness = TAP::Harness->new($args); 29 eval { 30 local ( *OLDERR, *OLDOUT ); 31 open OLDERR, '>&STDERR' or die $!; 32 open OLDOUT, '>&STDOUT' or die $!; 33 my $devnull = File::Spec->devnull; 34 open STDERR, ">$devnull" or die $!; 35 open STDOUT, ">$devnull" or die $!; 36 37 $harness->runtests( 38 File::Spec->catfile( 39 't', 40 'sample-tests', 41 'bailout' 42 ) 43 ); 44 45 open STDERR, '>&OLDERR' or die $!; 46 open STDOUT, '>&OLDOUT' or die $!; 47 }; 48 my $err = $@; 49 unlike $err, qr{!exit called!}, "$name: didn't exit"; 50 like $err, qr{FAILED--Further testing stopped: GERONIMMMOOOOOO!!!}, 51 "$name: bailout message"; 52} 53 54# vim:ts=2:sw=2:et:ft=perl 55 56