Class::MOP::load_class, is_class_loaded was deprecated in Moose-2.1100
[catagits/Catalyst-Runtime.git] / t / unit_utils_load_class.t
CommitLineData
d9183506 1use strict;
2use warnings;
3
f55d1491 4use Test::More tests => 18;
e7399d8b 5use Class::Load 'is_class_loaded';
d9183506 6
7use lib "t/lib";
8
9BEGIN { use_ok("Catalyst::Utils") };
10
11{
12 package This::Module::Is::Not::In::Inc::But::Does::Exist;
13 sub moose {};
14}
15
16my $warnings = 0;
c48e4d53 17$SIG{__WARN__} = sub {
18 return if $_[0] =~ /Subroutine (?:un|re|)initialize redefined at .*C3\.pm/;
19 $warnings++;
20};
d9183506 21
e7399d8b 22ok( !is_class_loaded("TestApp::View::Dump"), "component not yet loaded" );
d9183506 23
24Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
25
e7399d8b 26ok( is_class_loaded("TestApp::View::Dump"), "loaded ok" );
d9183506 27is( $warnings, 0, "no warnings emitted" );
28
29$warnings = 0;
30
31Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
32is( $warnings, 0, "calling again doesn't reaload" );
33
e7399d8b 34ok( !is_class_loaded("TestApp::View::Dump::Request"), "component not yet loaded" );
d9183506 35
36Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Request");
e7399d8b 37ok( is_class_loaded("TestApp::View::Dump::Request"), "loaded ok" );
d9183506 38
39is( $warnings, 0, "calling again doesn't reaload" );
40
41undef $@;
42eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Probably::Not::There") };
43ok( $@, "doesn't defatalize" );
44like( $@, qr/There\.pm.*\@INC/, "error looks right" );
45
7a1958eb 46undef $@;
47eval { Catalyst::Utils::ensure_class_loaded("__PACKAGE__") };
48ok( $@, "doesn't defatalize" );
49like( $@, qr/__PACKAGE__\.pm.*\@INC/, "errors sanely on __PACKAGE__.pm" );
50
d9183506 51$@ = "foo";
52Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Response");
53is( $@, "foo", '$@ is untouched' );
54
55undef $@;
56eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Not::In::Inc::But::Does::Exist") };
57ok( !$@, "no error when loading non existent .pm that *does* have a symbol table entry" );
58
59ede84e 59undef $@;
60eval { Catalyst::Utils::ensure_class_loaded('Silly::File::.#Name') };
61like($@, qr/Malformed class Name/, 'errored when attempting to load a file beginning with a .');
62
63undef $@;
64eval { Catalyst::Utils::ensure_class_loaded('Silly::File::Name.pm') };
65like($@, qr/Malformed class Name/, 'errored sanely when given a classname ending in .pm');
66
f55d1491 67undef $@;
68$warnings = 0;
69Catalyst::Utils::ensure_class_loaded("NullPackage");
70is( $warnings, 1, 'Loading a package which defines no symbols warns');
71is( $@, undef, '$@ still undef' );
72