xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/modules/IPC/Driver.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
1*5759b3d2Safresh1use strict;
2*5759b3d2Safresh1use warnings;
3*5759b3d2Safresh1
4*5759b3d2Safresh1use Test2::IPC::Driver::Files;
5*5759b3d2Safresh1
6*5759b3d2Safresh1use Test2::Tools::Tiny;
7*5759b3d2Safresh1use Test2::API qw/context test2_ipc_drivers/;
8*5759b3d2Safresh1
9*5759b3d2Safresh1Test2::IPC::Driver::Files->import();
10*5759b3d2Safresh1Test2::IPC::Driver::Files->import();
11*5759b3d2Safresh1Test2::IPC::Driver::Files->import();
12*5759b3d2Safresh1
13*5759b3d2Safresh1is_deeply(
14*5759b3d2Safresh1    [test2_ipc_drivers()],
15*5759b3d2Safresh1    ['Test2::IPC::Driver::Files'],
16*5759b3d2Safresh1    "Driver not added multiple times"
17*5759b3d2Safresh1);
18*5759b3d2Safresh1
19*5759b3d2Safresh1for my $meth (qw/send cull add_hub drop_hub waiting is_viable/) {
20*5759b3d2Safresh1    my $one = Test2::IPC::Driver->new;
21*5759b3d2Safresh1    like(
22*5759b3d2Safresh1        exception { $one->$meth },
23*5759b3d2Safresh1        qr/'\Q$one\E' did not define the required method '$meth'/,
24*5759b3d2Safresh1        "Require override of method $meth"
25*5759b3d2Safresh1    );
26*5759b3d2Safresh1}
27*5759b3d2Safresh1
28*5759b3d2Safresh1SKIP: {
29*5759b3d2Safresh1    last SKIP if $] lt "5.008";
30*5759b3d2Safresh1tests abort => sub {
31*5759b3d2Safresh1    my $one = Test2::IPC::Driver->new(no_fatal => 1);
32*5759b3d2Safresh1    my ($err, $out) = ("", "");
33*5759b3d2Safresh1
34*5759b3d2Safresh1    {
35*5759b3d2Safresh1        local *STDERR;
36*5759b3d2Safresh1        local *STDOUT;
37*5759b3d2Safresh1        open(STDERR, '>', \$err);
38*5759b3d2Safresh1        open(STDOUT, '>', \$out);
39*5759b3d2Safresh1        $one->abort('foo');
40*5759b3d2Safresh1    }
41*5759b3d2Safresh1
42*5759b3d2Safresh1    is($err, "IPC Fatal Error: foo\n", "Got error");
43*5759b3d2Safresh1    is($out, "Bail out! IPC Fatal Error: foo\n", "got 'bail-out' on stdout");
44*5759b3d2Safresh1
45*5759b3d2Safresh1    ($err, $out) = ("", "");
46*5759b3d2Safresh1
47*5759b3d2Safresh1    {
48*5759b3d2Safresh1        local *STDERR;
49*5759b3d2Safresh1        local *STDOUT;
50*5759b3d2Safresh1        open(STDERR, '>', \$err);
51*5759b3d2Safresh1        open(STDOUT, '>', \$out);
52*5759b3d2Safresh1        $one->abort_trace('foo');
53*5759b3d2Safresh1    }
54*5759b3d2Safresh1
55*5759b3d2Safresh1    like($out, qr/Bail out! IPC Fatal Error: foo/, "got 'bail-out' on stdout");
56*5759b3d2Safresh1    like($err, qr/IPC Fatal Error: foo/, "Got error");
57*5759b3d2Safresh1};
58*5759b3d2Safresh1}
59*5759b3d2Safresh1
60*5759b3d2Safresh1done_testing;
61