# Only MySQL uses this
$self->{innodb} ||= '';
- # DB2 doesn't support this
+ # DB2 and Firebird don't support 'field type NULL'
$self->{null} = 'NULL' unless defined $self->{null};
$self->{verbose} = $ENV{TEST_VERBOSE} || 0;
# First, with in-memory classes
my $schema_class = $self->setup_schema(@connect_info);
$self->test_schema($schema_class);
- $self->drop_tables;
}
# defined in sub create
use_namespaces => 0,
dump_directory => $DUMP_DIR,
datetime_timezone => 'Europe/Berlin',
- datetime_locale => 'de_DE'
+ datetime_locale => 'de_DE',
+ %{ $self->{loader_options} || {} },
);
$loader_opts{db_schema} = $self->{db_schema} if $self->{db_schema};
+ my $file_count;
+ my $expected_count = 36;
{
my @loader_warnings;
local $SIG{__WARN__} = sub { push(@loader_warnings, $_[0]); };
ok(!$@, "Loader initialization") or diag $@;
- my $file_count;
find sub { return if -d; $file_count++ }, $DUMP_DIR;
- my $expected_count = 36;
-
$expected_count += grep /CREATE (?:TABLE|VIEW)/i,
@{ $self->{extra}{create} || [] };
is $file_count, $expected_count, 'correct number of files generated';
- exit if $file_count != $expected_count;
-
my $warn_count = 2;
$warn_count++ if grep /ResultSetManager/, @loader_warnings;
"Missing PK warning");
}
}
-
+
+ exit if $file_count != $expected_count;
+
return $schema_class;
}
my $schema_class = shift;
my $conn = $schema_class->clone;
+
+ ($self->{before_tests_run} || sub {})->($conn);
+
my $monikers = {};
my $classes = {};
foreach my $source_name ($schema_class->sources) {
my $table_name = $schema_class->source($source_name)->from;
+ $table_name = $$table_name if ref $table_name;
+
$monikers->{$table_name} = $source_name;
$classes->{$table_name} = $schema_class . q{::} . $source_name;
is( $rsobj1->loader_test1_rsmeth, 'all is still well', 'Result set method' );
}
- ok( $class1->column_info('id')->{is_auto_increment}, 'is_auto_incrment detection' );
+ ok( $class1->column_info('id')->{is_auto_increment}, 'is_auto_increment detection' );
my $obj = $rsobj1->find(1);
is( $obj->id, 1, "Find got the right row" );
eval {
my $obj10_2 = $obj11->loader_test10;
- $obj10_2->loader_test11( $obj11->id11() );
- $obj10_2->update();
+ $obj10_2->update({ loader_test11 => $obj11->id11 });
};
+ diag $@ if $@;
ok(!$@, "Setting up circular relationship");
SKIP: {
my $dbh = $self->dbconnect(0);
- $dbh->do("DROP TABLE $_") for @{ $self->{extra}->{drop} || [] };
+ $dbh->do($_) for @{ $self->{extra}{pre_drop_ddl} || [] };
+ $dbh->do("DROP TABLE $_") for @{ $self->{extra}{drop} || [] };
my $drop_auto_inc = $self->{auto_inc_drop_cb} || sub {};
else {
$dbh->do($drop_fk);
}
- $dbh->do("DROP TABLE $_") for (@tables_advanced);
$dbh->do($_) for map { $drop_auto_inc->(@$_) } @tables_advanced_auto_inc;
+ $dbh->do("DROP TABLE $_") for (@tables_advanced);
unless($self->{no_inline_rels}) {
$dbh->do("DROP TABLE $_") for (@tables_inline_rels);
$dbh->do("DROP TABLE $_") for (@tables_implicit_rels);
}
}
- $dbh->do("DROP TABLE $_") for (@tables, @tables_rescan);
$dbh->do($_) for map { $drop_auto_inc->(@$_) } @tables_auto_inc;
+ $dbh->do("DROP TABLE $_") for (@tables, @tables_rescan);
+ $dbh->disconnect;
+
+# fixup for Firebird
+ $dbh = $self->dbconnect(0);
+ $dbh->do('DROP TABLE loader_test2');
$dbh->disconnect;
}