use Test::More tests => 3; ok(1, "Before"); BEGIN { package M; use TE; package main; } use TE; use M; exits_ok( sub {f()}, -2, "exits"); ok(1, "After");
package M; use strict; require Exporter; use vars qw(@ISA @EXPORT); @ISA = qw(Exporter); @EXPORT = qw(f); sub f { exit(-1); } 1;
package TE; use strict; require Exporter; use vars qw(@ISA @EXPORT); @ISA = qw(Exporter); @EXPORT = qw(exit exits_ok); use Test::Builder; my $Test = Test::Builder->new(); sub exit { my ($arg) = @_; $arg = '' if not defined $arg; die "EXIT$arg\n"; } sub exits_ok (&$;$$) { my ($coderef, $expecting, $description) = @_; $expecting = '' if not defined $expecting; $description ||= "exit $expecting"; my $result; eval {&$coderef}; my $ex = $@; $Test->ok($ex and $ex eq "EXIT$expecting\n", $description); if ($ex) { if ($ex =~ /^EXIT(.*)/) { if ($1 ne $expecting) { $Test->diag("Received '$1' expected '$expecting'"); } } else { $Test->diag("died before reaching an exit statement"); } } } 1;
In reply to testing exit in Perl modules by szabgab
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |