use strict;
use warnings;
use Test::More 0.88;
use lib 't/lib';
use Test::Class::Load ':all';
use Test::Fatal;
is( load_class('Class::Load::OK'), 'Class::Load::OK', 'loaded class OK' );
is( $Class::Load::ERROR, undef, 'ERROR is undef' );
like(
exception {
load_class('Class::Load::Nonexistent');
},
qr{^Can't locate Class/Load/Nonexistent.pm in \@INC},
'threw exception for nonexistent class'
);
like(
$Class::Load::ERROR,
qr{^Can't locate Class/Load/Nonexistent.pm in \@INC},
'ERROR message for nonexistent class',
);
ok( load_class('Class::Load::OK'), 'loaded class OK' );
is( $Class::Load::ERROR, undef, 'ERROR is undef' );
like(
exception {
load_class('Class::Load::SyntaxError');
},
qr{^Missing right curly or square bracket at },
'exception contains syntax error message'
);
like(
$Class::Load::ERROR,
qr{^Missing right curly or square bracket at },
'ERROR contains syntax error message'
);
ok( is_class_loaded('Class::Load::OK') );
ok( !is_class_loaded('Class::Load::Nonexistent') );
ok( !is_class_loaded('Class::Load::SyntaxError') );
do {
package Class::Load::Inlined;
sub inlined { 1 }
};
is(
load_class('Class::Load::Inlined'),
'Class::Load::Inlined',
'loaded class Inlined'
);
is( $Class::Load::ERROR, undef );
ok( is_class_loaded('Class::Load::Inlined') );
like(
exception {
load_class( 'Class::Load::VersionCheck', { -version => 43 } );
},
qr/^Class::Load::VersionCheck version 43 required/,
'got expected error for load_class with explicit version'
);
is(
load_class( 'Class::Load::VersionCheck', { -version => 41 } ),
'Class::Load::VersionCheck',
'loaded class with version check'
);
is(
load_class( 'Class::Load::VersionCheck2', { -version => 41 } ),
'Class::Load::VersionCheck2',
'loaded class with version check'
);
like(
exception {
load_class( 'Class::Load::VersionCheck2', { -version => 43 } );
},
qr/^Class::Load::VersionCheck2 version 43 required/,
'got expected error for load_class with explicit version (after class has been loaded into memory)'
);
like(
exception {
load_class('__PACKAGE__');
},
qr/__PACKAGE__\.pm.*\@INC/,
'errors sanely on __PACKAGE__.pm'
);
done_testing;