Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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';

Replies are listed 'Best First'.
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?
[Corion]: marto: Ow! You got hit by the storm that is bringing warm weather to me ...
[1nickt]: marto Good to hear that was the worst of it for you...
[marto]: 1nickt the worst I'm aware of at the moment :P
LanX .♩..♬ ... Another one bites the Sahara dust ...
marto wonders what fresh hell the firefox update has brought, apart from maxing out CPUs
1nickt was looking into Firefox Extended Support releases yesterday. You don't have to go with the updates!
[erix]: wonderfully red sun here
[LanX]: FF has become a source of instability :(
[1nickt]: erix not so wonderful for the lungs :-(

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2017-10-17 12:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My fridge is mostly full of:

















    Results (230 votes). Check out past polls.

    Notices?