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