Only TODO the actually failing test.
[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;
b40d0b9e 7use Class::MOP;
d9183506 8
9use lib "t/lib";
10
11BEGIN { use_ok("Catalyst::Utils") };
12
13{
14 package This::Module::Is::Not::In::Inc::But::Does::Exist;
15 sub moose {};
16}
17
18my $warnings = 0;
19$SIG{__WARN__} = sub { $warnings++ };
20
b40d0b9e 21ok( !Class::MOP::is_class_loaded("TestApp::View::Dump"), "component not yet loaded" );
d9183506 22
23Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
24
b40d0b9e 25ok( Class::MOP::is_class_loaded("TestApp::View::Dump"), "loaded ok" );
d9183506 26is( $warnings, 0, "no warnings emitted" );
27
28$warnings = 0;
29
30Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump");
31is( $warnings, 0, "calling again doesn't reaload" );
32
b40d0b9e 33ok( !Class::MOP::is_class_loaded("TestApp::View::Dump::Request"), "component not yet loaded" );
d9183506 34
35Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Request");
b40d0b9e 36ok( Class::MOP::is_class_loaded("TestApp::View::Dump::Request"), "loaded ok" );
d9183506 37
38is( $warnings, 0, "calling again doesn't reaload" );
39
40undef $@;
41eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Probably::Not::There") };
42ok( $@, "doesn't defatalize" );
43like( $@, qr/There\.pm.*\@INC/, "error looks right" );
44
7a1958eb 45undef $@;
46eval { Catalyst::Utils::ensure_class_loaded("__PACKAGE__") };
47ok( $@, "doesn't defatalize" );
48like( $@, qr/__PACKAGE__\.pm.*\@INC/, "errors sanely on __PACKAGE__.pm" );
49
d9183506 50$@ = "foo";
51Catalyst::Utils::ensure_class_loaded("TestApp::View::Dump::Response");
52is( $@, "foo", '$@ is untouched' );
53
54undef $@;
55eval { Catalyst::Utils::ensure_class_loaded("This::Module::Is::Not::In::Inc::But::Does::Exist") };
56ok( !$@, "no error when loading non existent .pm that *does* have a symbol table entry" );
57
59ede84e 58undef $@;
59eval { Catalyst::Utils::ensure_class_loaded('Silly::File::.#Name') };
60like($@, qr/Malformed class Name/, 'errored when attempting to load a file beginning with a .');
61
62undef $@;
63eval { Catalyst::Utils::ensure_class_loaded('Silly::File::Name.pm') };
64like($@, qr/Malformed class Name/, 'errored sanely when given a classname ending in .pm');
65