* Ovid <[email protected]> [2012-04-11 16:35]:
> my $ok;
> END { BAIL_OUT "Could not load all modules" unless $ok }
[...]
> ok 1, 'All modules loaded successfully';
> $ok = 1;
Ah d’uh! Now I feel stupid.
This could so easily be packaged in a handful of lines:
package Test::AutoBailOut;
use parent 'Test::Builder::Module';
sub _tb { __PACKAGE__->builder }
my $reason = 'Tests must succeeded';
sub import {
my %arg = @_;
$reason = $arg{'reason'} if exists $arg{'reason'};
}
my $ok;
sub no_bailout ($) { _tb->ok( $ok = 1, @_ ) }
END { _tb->BAIL_OUT( $reason ) unless $ok }
@EXPORT = 'no_bailout';
Then you simply do this:
use Test::More tests => 1;
use Test::AutoBailOut reason => 'Could not load prerequisites';
use Config;
use Test::Trap::Builder::TempFile;
use Test::Trap::Builder::SystemSafe;
use Test::Trap::Builder;
use Test::Trap;
use if $Config{'useperlio'}, 'Test::Trap::Builder::PerlIO';
no_bailout 'All prerequisites loaded';
Dead simple. Huge swathes of complexity, *puff* – vanished.
Schwern, care to ship that in Test::More to deprecate `use_ok`? :)
Regards,
--
Aristotle Pagaltzis // <http://plasmasturm.org/>