Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: How to test exit? - wrote a quick Test::Exit module

by imp (Priest)
on Jun 05, 2007 at 20:16 UTC ( #619494=note: print w/ replies, xml ) Need Help??


in reply to Re: How to test exit? - override CORE::GLOBAL::exit
in thread How to test exit?

I decided to play with this a little more and wrote a quick implementation of Test::Exit.

Update - use Sidhekin 's Test::Trap instead

Test/Exit.pm

package Test::Exit; use strict; use warnings; use Test::Builder; use base qw( Exporter ); our @EXPORT = qw( exit_ok exit_nok exit_with ); my $test = Test::Builder->new; my $exit_callback = sub {}; BEGIN { *CORE::GLOBAL::exit = sub { $exit_callback->(@_) }; } sub exit_with(&$$) { my ($coderef, $expected_exit_code, $message) = @_; my $exit_called = 0; my $exit_code = 0; $exit_callback = sub { $exit_called = 1; $exit_code = shift }; $coderef->(); if ($exit_called) { if (! $test->ok( $expected_exit_code == $exit_code, $message)) + { $test->diag("expected $expected_exit_code but received $ex +it_code"); } } else { fail($message . " - exit not called"); } } sub exit_ok(&$) { my ($coderef, $message) = @_; my $exit_called = 0; $exit_callback = sub { $exit_called = 1}; $coderef->(); $test->ok($exit_called == 1, $message); } sub exit_nok(&$) { my ($coderef, $message) = @_; my $exit_called = 0; $exit_callback = sub { $exit_called = 1}; $coderef->(); $test->ok($exit_called == 0, $message); } 1; =head1 NAME Test::Exit - Tests whether exit was called =head2 exit_ok exit_ok { exit; }, 'assert that exit was called'; =head2 exit_nok exit_nok { }, 'assert that exit was not called'; =head2 exit_with exit_with { exit 2 }, 2, 'expect exit(2)'; =cut
test.pl
use strict; use warnings; use Test::More (tests => 3); use Test::Exit; exit_ok { exit } "exit called"; exit_nok { } "exit not called"; exit_with { exit 2; } 2, 'exit code = 2';


Comment on Re^2: How to test exit? - wrote a quick Test::Exit module
Select or Download Code
Re^3: How to test exit? - wrote a quick Test::Exit module
by Anonymous Monk on Oct 31, 2014 at 08:44 UTC
    You can use Test::Trap , to catch exitcode, stdout, stderr etc of a subroutine

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://619494]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (16)
As of 2015-07-06 17:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (77 votes), past polls