use Test::More tests => 11;
use_ok "UNIVERSAL::require";
use lib qw(t);
is( Dummy->require, 23, 'require()' );
is( $UNIVERSAL::require::ERROR, '', ' $ERROR empty' );
ok( $Dummy::VERSION, ' $VERSION ok' );
{
$SIG{__WARN__} = sub { warn @_
unless $_[0] =~ /^Subroutine \w+ redefined/ };
delete $INC{'Dummy.pm'};
is( Dummy->require(0.4), 23, 'require($version)' );
is( $UNIVERSAL::require::ERROR, '', ' $ERROR empty' );
delete $INC{'Dummy.pm'};
ok( !Dummy->require(1.0), 'require($version) fail' );
like( $UNIVERSAL::require::ERROR,
'/^Dummy version 1.* required--this is only version 0.5/' );
}
{
my $warning = '';
local $SIG{__WARN__} = sub { $warning = join '', @_ };
eval 'use UNIVERSAL';
is( $warning, '', 'use UNIVERSAL doesnt interfere' );
}
my $evil = "Dummy; Test::More::fail('this should never be called');";
ok !$evil->require;
isnt $@, '';