added the default attrs to solve the failing test recently commited
[dbsrgits/DBIx-Class.git] / t / 33storage_reconnect.t
index 8dcaeec..8f1eba1 100644 (file)
@@ -7,20 +7,26 @@ use Test::More;
 use lib qw(t/lib);
 use DBICTest;
 
-plan tests => 5;
+plan tests => 6;
 
 my $db_orig = "$FindBin::Bin/var/DBIxClass.db";
 my $db_tmp  = "$db_orig.tmp";
 
 # Set up the "usual" sqlite for DBICTest
-my $schema = DBICTest->init_schema;
+my $schema = DBICTest->init_schema( sqlite_use_file => 1 );
 
 # Make sure we're connected by doing something
 my @art = $schema->resultset("Artist")->search({ }, { order_by => 'name DESC'});
 cmp_ok(@art, '==', 3, "Three artists returned");
 
 # Disconnect the dbh, and be sneaky about it
-$schema->storage->_dbh->disconnect;
+# Also test if DBD::SQLite finaly knows how to ->disconnect properly
+{
+  my $w;
+  local $SIG{__WARN__} = sub { $w = shift };
+  $schema->storage->_dbh->disconnect;
+  ok ($w !~ /active statement handles/, 'SQLite can disconnect properly');
+}
 
 # Try the operation again - What should happen here is:
 #   1. S::DBI blindly attempts the SELECT, which throws an exception
@@ -40,10 +46,14 @@ close DBFILE;
 chmod 0000, $db_orig;
 
 ### Try the operation again... it should fail, since there's no db
-eval {
-    my @art_three = $schema->resultset("Artist")->search( {}, { order_by => 'name DESC' } );
-};
-ok( $@, 'The operation failed' );
+{
+    # Catch the DBI connection error
+    local $SIG{__WARN__} = sub {};
+    eval {
+        my @art_three = $schema->resultset("Artist")->search( {}, { order_by => 'name DESC' } );
+    };
+    ok( $@, 'The operation failed' );
+}
 
 ### Now, move the db file back to the correct name
 unlink($db_orig);