# ->has_many('rel', 'Some::Schema::Class'...)
sub ensure_class_loaded {
my ($class, $f_class) = @_;
- eval "require $f_class";
- my $err = $@;
- Class::Inspector->loaded($f_class)
- or $class->throw_exception($err || "`require $f_class' was successful".
- "but the package is not defined");
+ return if Class::Inspector->loaded($f_class);
+ require $f_class;
}
# Returns true if the specified class is installed or already loaded, false
my $schema = DBICTest->init_schema();
-plan tests => 17;
+plan tests => 19;
# Test ensure_class_found
ok( $schema->ensure_class_found('DBIx::Class::Schema'),
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' );
+like( $@, qr/did not return a true value/,
+ 'DBICTest::ErrorComponent threw ok' );
# Test ensure_class_loaded
ok( Class::Inspector->loaded('TestPackage::A'), 'anonymous package exists' );
ok( Class::Inspector->loaded('DBICTest::FakeComponent'),
'DBICTest::FakeComponent now loaded' );
+{
+ # 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/
+ );
+ };
+ eval { $schema->load_optional_class('DBICTest::SyntaxErrorComponent') };
+ like( $@, qr/syntax error/, 'DBICTest::ErrorComponent threw ok' );
+ eval { $schema->ensure_class_loaded('DBICTest::SyntaxErrorComponent') };
+ like( $@, qr/syntax error/, 'DBICTest::ErrorComponent threw ok' );
+}
+
1;
);
__PACKAGE__->set_primary_key(qw/id1 id2/);
__PACKAGE__->add_unique_constraint('tktlnameunique' => ['name']);
-__PACKAGE__->belongs_to('parent', 'TwoKeyTreeLike',
+__PACKAGE__->belongs_to('parent', 'DBICTest::Schema::TwoKeyTreeLike',
{ 'foreign.id1' => 'self.parent1', 'foreign.id2' => 'self.parent2'});
1;