X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F90ensure_class_loaded.t;h=c901d06b465192847c0c7b0ab407f7d7a8f09b07;hb=a8e1142ce623ef5bd83df069329327d47927b49d;hp=8f66c2e1ecf31d2e45a6f36d2fede648dc0ea915;hpb=ae51573612aec70814b81bfe0c3683b824564368;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/90ensure_class_loaded.t b/t/90ensure_class_loaded.t index 8f66c2e..c901d06 100644 --- a/t/90ensure_class_loaded.t +++ b/t/90ensure_class_loaded.t @@ -13,32 +13,63 @@ BEGIN { my $schema = DBICTest->init_schema(); -plan tests => 6; +plan tests => 19; -ok(Class::Inspector->loaded('TestPackage::A'), - 'anon. package exists'); -eval { - $schema->ensure_class_loaded('TestPackage::A'); -}; +# Test ensure_class_found +ok( $schema->ensure_class_found('DBIx::Class::Schema'), + 'loaded package DBIx::Class::Schema was found' ); +ok( !Class::Inspector->loaded('DBICTest::FakeComponent'), + 'DBICTest::FakeComponent not loaded yet' ); +ok( $schema->ensure_class_found('DBICTest::FakeComponent'), + 'package DBICTest::FakeComponent was found' ); +ok( !Class::Inspector->loaded('DBICTest::FakeComponent'), + 'DBICTest::FakeComponent not loaded by ensure_class_found()' ); +ok( $schema->ensure_class_found('TestPackage::A'), + 'anonymous package TestPackage::A found' ); +ok( !$schema->ensure_class_found('FAKE::WONT::BE::FOUND'), + 'fake package not found' ); -ok(!$@, 'ensure_class_loaded detected an anon. class'); +# Test load_optional_class +my $retval = eval { $schema->load_optional_class('ANOTHER::FAKE::PACKAGE') }; +ok( !$@, 'load_optional_class on a nonexistent class did not throw' ); +ok( !$retval, 'nonexistent package not loaded' ); +$retval = eval { $schema->load_optional_class('DBICTest::OptionalComponent') }; +ok( !$@, 'load_optional_class on an existing class did not throw' ); +ok( $retval, 'DBICTest::OptionalComponent loaded' ); +eval { $schema->load_optional_class('DBICTest::ErrorComponent') }; +like( $@, qr/did not return a true value/, + 'DBICTest::ErrorComponent threw ok' ); -eval { - $schema->ensure_class_loaded('FakePackage::B'); -}; +# Test ensure_class_loaded +ok( Class::Inspector->loaded('TestPackage::A'), 'anonymous package exists' ); +eval { $schema->ensure_class_loaded('TestPackage::A'); }; +ok( !$@, 'ensure_class_loaded detected an anon. class' ); +eval { $schema->ensure_class_loaded('FakePackage::B'); }; +like( $@, qr/Can't locate/, + 'ensure_class_loaded threw exception for nonexistent class' ); +ok( !Class::Inspector->loaded('DBICTest::FakeComponent'), + 'DBICTest::FakeComponent not loaded yet' ); +eval { $schema->ensure_class_loaded('DBICTest::FakeComponent'); }; +ok( !$@, 'ensure_class_loaded detected an existing but non-loaded class' ); +ok( Class::Inspector->loaded('DBICTest::FakeComponent'), + 'DBICTest::FakeComponent now loaded' ); -like($@, qr/Can't locate/, - 'ensure_class_loaded threw exception for nonexistent class'); +{ + # Squash warnings about syntax errors in SytaxErrorComponent.pm + local $SIG{__WARN__} = sub { + my $warning = shift; + warn $warning unless ( + $warning =~ /String found where operator expected/ or + $warning =~ /Missing operator before/ + ); + }; -ok(!Class::Inspector->loaded('DBICTest::FakeComponent'), - 'DBICTest::FakeComponent not loaded yet'); - -eval { - $schema->ensure_class_loaded('DBICTest::FakeComponent'); -}; - -ok(!$@, 'ensure_class_loaded detected an existing but non-loaded class'); -ok(Class::Inspector->loaded('DBICTest::FakeComponent'), - 'DBICTest::FakeComponent now loaded'); + eval { $schema->ensure_class_loaded('DBICTest::SyntaxErrorComponent1') }; + like( $@, qr/syntax error/, + 'ensure_class_loaded(DBICTest::SyntaxErrorComponent1) threw ok' ); + eval { $schema->load_optional_class('DBICTest::SyntaxErrorComponent2') }; + like( $@, qr/syntax error/, + 'load_optional_class(DBICTest::SyntaxErrorComponent2) threw ok' ); +} 1;