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