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