#!/usr/bin/perl
use strict;
use warnings;
BEGIN { require 't/test.pl' }
{
package Some::Thing;
use TB2::Mouse;
with "TB2::CanLoad";
}
note("try protection"); {
local $! = 99;
local $@ = "foo";
my $handler = sub { ok(0, "handler should not fire") };
local $SIG{__DIE__} = $handler;
ok !$INC{"Text/ParseWords.pm"};
my $return = Some::Thing->load("Text::ParseWords");
ok $return, "load() return";
ok Text::ParseWords->can("quotewords"), "module loaded";
cmp_ok $!, '==', 99,'$! protected';
is $@, "foo", '$@ protected';
is $SIG{__DIE__}, $handler, '$SIG{__DIE__} protected';
}
note "module fails to load"; {
ok !eval { Some::Thing->load("I::Do::Not::Exist"); 1 };
like $@, qr{^\QCan't locate I/Do/Not/Exist.pm};
}
done_testing;