no :PathPart -> :PathPart('subname')
[catagits/Catalyst-Runtime.git] / t / unit_utils_load_class.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 12;
7
8 use lib "t/lib";
9
10 BEGIN { use_ok("Catalyst::Utils") };
11
12 {
13     package This::Module::Is::Not::In::Inc::But::Does::Exist;
14     sub moose {};
15 }
16
17 my $warnings = 0;
18 $SIG{__WARN__} = sub { $warnings++ };
19
20 ok( !Class::Inspector->loaded("TestApp::View::Dump"), "component not yet loaded" );
21
22 Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
23
24 ok( Class::Inspector->loaded("TestApp::View::Dump"), "loaded ok" );
25 is( $warnings, 0, "no warnings emitted" );
26
27 $warnings = 0;
28
29 Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
30 is( $warnings, 0, "calling again doesn't reaload" );
31
32 ok( !Class::Inspector->loaded("TestApp::View::Dump::Request"), "component not yet loaded" );
33
34 Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Request");
35 ok( Class::Inspector->loaded("TestApp::View::Dump::Request"), "loaded ok" );
36
37 is( $warnings, 0, "calling again doesn't reaload" );
38
39 undef $@;
40 eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Probably::Not::There") };
41 ok( $@, "doesn't defatalize" );
42 like( $@, qr/There\.pm.*\@INC/, "error looks right" );
43
44 $@ = "foo";
45 Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Response");
46 is( $@, "foo", '$@ is untouched' );
47
48 undef $@;
49 eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Not::In::Inc::But::Does::Exist") };
50 ok( !$@, "no error when loading non existent .pm that *does* have a symbol table entry" ); 
51