in reply to How to test exit?
You could override the core exit function with a thin wrapper that executes a callback with the logic you want to test. Something like this:
Or you could play with it a bit more and do something like this:use strict; use warnings; use Test::More (tests => 1); my $exit_callback = sub {}; BEGIN { *CORE::GLOBAL::exit = sub { $exit_callback->(@_) }; } my $exit_called = 0; $exit_callback = sub { $exit_called = 1}; exit; is($exit_called, 1, "exit was called");
use strict; use warnings; use Test::More (tests => 2); my $exit_callback = sub {}; BEGIN { *CORE::GLOBAL::exit = sub { $exit_callback->(@_) }; } sub exit_ok(&$) { my ($code, $message) = @_; my $exit_called = 0; $exit_callback = sub { $exit_called = 1}; $code->(); is($exit_called, 1, $message); } sub noexit_ok(&$) { my ($code, $message) = @_; my $exit_called = 0; $exit_callback = sub { $exit_called = 1}; $code->(); is($exit_called, 0, $message); } exit_ok { exit } "exit called"; noexit_ok { } "exit not called";
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: How to test exit? - wrote a quick Test::Exit module
by imp (Priest) on Jun 05, 2007 at 20:16 UTC | |
by Anonymous Monk on Oct 31, 2014 at 08:44 UTC |
In Section
Seekers of Perl Wisdom