use Test::Exception;
use Try::Tiny;
use File::Path 'rmtree';
+use DBIx::Class::Optional::Dependencies;
use DBIx::Class::Schema::Loader 'make_schema_at';
use DBIx::Class::Schema::Loader::Utils 'split_name';
use String::ToIdentifier::EN::Unicode 'to_identifier';
});
my $dbh1 = $schema->storage->dbh;
- my $dbh2 = $extra_schema->storage->dbh;
$dbh1->do(<<'EOF');
CREATE TABLE informix_loader_test4 (
$dbh1->do(<<'EOF');
ALTER TABLE informix_loader_test5 ADD CONSTRAINT UNIQUE (four_id) CONSTRAINT loader_test5_uniq
EOF
+
+ my $db1 = db_name($schema);
+
+ $dbh1->disconnect;
+
+ my $dbh2 = $extra_schema->storage->dbh;
+
$dbh2->do(<<'EOF');
CREATE TABLE informix_loader_test5 (
pk SERIAL PRIMARY KEY,
)
EOF
- my $db1 = db_name($schema);
my $db2 = db_name($extra_schema);
+ $dbh2->disconnect;
+
my $db1_moniker = join '', map ucfirst lc, split_name to_identifier $db1;
my $db2_moniker = join '', map ucfirst lc, split_name to_identifier $db2;
{
naming => 'current',
db_schema => $db_schema,
- moniker_parts => [qw/database name/],
dump_directory => EXTRA_DUMP_DIR,
quiet => 1,
},
[ $dsn, $user, $password ],
);
+ InformixMultiDatabase->storage->disconnect;
+
diag join "\n", @warns if @warns;
is @warns, 0;
my ($rsrc, $rs, $row, $rel_info, %uniqs);
lives_and {
- ok $rsrc = $test_schema->source("${db1_moniker}InformixLoaderTest4");
+ ok $rsrc = $test_schema->source("InformixLoaderTest4");
} 'got source for table in database one';
is try { $rsrc->column_info('id')->{is_auto_increment} }, 1,
'column in database one';
lives_and {
- ok $rs = $test_schema->resultset("${db1_moniker}InformixLoaderTest4");
+ ok $rs = $test_schema->resultset("InformixLoaderTest4");
} 'got resultset for table in database one';
lives_and {
'correct unique constraint in database one');
lives_and {
- ok $rsrc = $test_schema->source("${db2_moniker}InformixLoaderTest6");
+ ok $rsrc = $test_schema->source("InformixLoaderTest6");
} 'got source for table in database two';
is try { $rsrc->column_info('id')->{is_auto_increment} }, 1,
'column in database two introspected correctly';
lives_and {
- ok $rs = $test_schema->resultset("${db2_moniker}InformixLoaderTest6");
+ ok $rs = $test_schema->resultset("InformixLoaderTest6");
} 'got resultset for table in database two';
lives_and {
'relationship in database two';
lives_and {
- ok $rsrc = $test_schema->source("${db2_moniker}InformixLoaderTest7");
+ ok $rsrc = $test_schema->source("InformixLoaderTest7");
} 'got source for table in database two';
%uniqs = try { $rsrc->unique_constraints };
if( !$dsn ) {
$tester->skip_tests('You need to set the DBICTEST_INFORMIX_DSN, _USER, and _PASS environment variables');
}
+elsif (!DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_informix')) {
+ $tester->skip_tests('You need to install ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_informix'));
+}
else {
$tester->run_tests();
}
local $schema->loader->{schema} = $schema;
return $schema->loader->_current_db;
+
+ $schema->storage->disconnect;
}
END {
if (not $ENV{SCHEMA_LOADER_TESTS_NOCLEANUP}) {
if (my $dbh2 = try { $extra_schema->storage->dbh }) {
- my $dbh1 = $schema->storage->dbh;
try {
$dbh2->do('DROP TABLE informix_loader_test7');
$dbh2->do('DROP TABLE informix_loader_test6');
$dbh2->do('DROP TABLE informix_loader_test5');
+ }
+ catch {
+ die "Error dropping test tables: $_";
+ };
+
+ $dbh2->disconnect;
+ }
+
+ if (my $dbh1 = try { $schema->storage->dbh }) {
+
+ try {
$dbh1->do('DROP TABLE informix_loader_test5');
$dbh1->do('DROP TABLE informix_loader_test4');
}
catch {
die "Error dropping test tables: $_";
};
+
+ $dbh1->disconnect;
}
rmtree EXTRA_DUMP_DIR;