Add Catalyst::Test::crequest to return both HTTP::Response object & $c for
[catagits/Catalyst-Runtime.git] / t / unit_utils_load_class.t
CommitLineData
d9183506 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
7a1958eb 6use Test::More tests => 16;
d9183506 7
8use lib "t/lib";
9
10BEGIN { use_ok("Catalyst::Utils") };
11
12{
13 package This::Module::Is::Not::In::Inc::But::Does::Exist;
14 sub moose {};
15}
16
17my $warnings = 0;
18$SIG{__WARN__} = sub { $warnings++ };
19
20ok( !Class::Inspector->loaded("TestApp::View::Dump"), "component not yet loaded" );
21
22Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
23
24ok( Class::Inspector->loaded("TestApp::View::Dump"), "loaded ok" );
25is( $warnings, 0, "no warnings emitted" );
26
27$warnings = 0;
28
29Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
30is( $warnings, 0, "calling again doesn't reaload" );
31
32ok( !Class::Inspector->loaded("TestApp::View::Dump::Request"), "component not yet loaded" );
33
34Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Request");
35ok( Class::Inspector->loaded("TestApp::View::Dump::Request"), "loaded ok" );
36
37is( $warnings, 0, "calling again doesn't reaload" );
38
39undef $@;
40eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Probably::Not::There") };
41ok( $@, "doesn't defatalize" );
42like( $@, qr/There\.pm.*\@INC/, "error looks right" );
43
7a1958eb 44undef $@;
45eval { Catalyst::Utils::ensure_class_loaded("__PACKAGE__") };
46ok( $@, "doesn't defatalize" );
47like( $@, qr/__PACKAGE__\.pm.*\@INC/, "errors sanely on __PACKAGE__.pm" );
48
d9183506 49$@ = "foo";
50Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Response");
51is( $@, "foo", '$@ is untouched' );
52
53undef $@;
54eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Not::In::Inc::But::Does::Exist") };
55ok( !$@, "no error when loading non existent .pm that *does* have a symbol table entry" );
56
59ede84e 57undef $@;
58eval { Catalyst::Utils::ensure_class_loaded('Silly::File::.#Name') };
59like($@, qr/Malformed class Name/, 'errored when attempting to load a file beginning with a .');
60
61undef $@;
62eval { Catalyst::Utils::ensure_class_loaded('Silly::File::Name.pm') };
63like($@, qr/Malformed class Name/, 'errored sanely when given a classname ending in .pm');
64