Fix test suite to work again with DBICTEST_SQLITE_USE_FILE
Peter Rabbitson [Tue, 17 Mar 2015 12:06:13 +0000 (13:06 +0100)]
It was never included as part of POISON_ENV and subsequently lapsed. Sigh.

(cherry pick of 7154ff35)

maint/travis-ci_scripts/20_install.bash
t/40compose_connection.t
t/cdbi/sweet/08pager.t
t/lib/DBICTest.pm
t/prefetch/correlated.t
t/storage/base.t

index 0279f78..3535407 100755 (executable)
@@ -89,6 +89,7 @@ if [[ "$POISON_ENV" = "true" ]] ; then
   # returned results, look through lib, find all mentioned ENVvars and
   # set them to true and see if anything explodes
   for var in \
+    DBICTEST_SQLITE_USE_FILE \
     DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER \
     $(grep -P '\$ENV\{' -r lib/ --exclude-dir Optional | grep -oP '\bDBIC\w+' | sort -u | grep -v DBIC_TRACE)
   do
index a68a2c2..051ab9b 100644 (file)
@@ -16,7 +16,4 @@ warnings_exist { DBICTest->init_schema( compose_connection => 1, sqlite_use_file
 
 cmp_ok(DBICTest->resultset('Artist')->count, '>', 0, 'count is valid');
 
-# cleanup globaly cached handle so we do not trigger the leaktest
-DBICTest->schema->storage->disconnect;
-
 done_testing;
index f645276..9bfd62c 100644 (file)
@@ -61,15 +61,4 @@ is( $it->next, undef, "disable_sql_paging next past end of page ok" );
 );
 is( $it->count, 1, "complex abstract count ok" );
 
-# cleanup globals so we do not trigger the leaktest
-for ( map { DBICTest->schema->class($_) } DBICTest->schema->sources ) {
-  $_->class_resolver(undef);
-  $_->resultset_instance(undef);
-  $_->result_source_instance(undef);
-}
-{
-  no warnings qw/redefine once/;
-  *DBICTest::schema = sub {};
-}
-
 done_testing;
index 670e180..c72ed65 100644 (file)
@@ -143,6 +143,7 @@ END {
 
 $SIG{INT} = sub { _cleanup_dbfile(); exit 1 };
 
+my $need_global_cleanup;
 sub _cleanup_dbfile {
     # cleanup if this is us
     if (
@@ -152,6 +153,10 @@ sub _cleanup_dbfile {
         or
       $ENV{DBICTEST_LOCK_HOLDER} == $$
     ) {
+        if ($need_global_cleanup and my $dbh = DBICTest->schema->storage->_dbh) {
+          $dbh->disconnect;
+        }
+
         my $db_file = _sqlite_dbfilename();
         unlink $_ for ($db_file, "${db_file}-journal");
     }
@@ -316,6 +321,7 @@ sub init_schema {
     my $schema;
 
     if ($args{compose_connection}) {
+      $need_global_cleanup = 1;
       $schema = DBICTest::Schema->compose_connection(
                   'DBICTest', $self->_database(%args)
                 );
index fdbd262..5196620 100644 (file)
@@ -129,6 +129,8 @@ is_same_sql_bind(
   'Expected SQL on correlated realiased subquery'
 );
 
+$schema->storage->disconnect;
+
 # test for subselect identifier leakage
 # NOTE - the hodge-podge mix of literal and regular identifuers is *deliberate*
 for my $quote_names (0,1) {
index df3641e..1861855 100644 (file)
@@ -146,6 +146,8 @@ for my $type (keys %$invocations) {
   );
 }
 
+$schema->storage->_dbh->disconnect;
+
 # make sure connection-less storages do not throw on _determine_driver
 # but work with ENV at the same time
 SKIP: for my $env_dsn (undef, (DBICTest->_database)[0] ) {