X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F33storage_reconnect.t;h=8f1eba15a7c5f46320428b9df44232b180173096;hb=6848ce7ce4825f7f8e485b7efa2259a1f2f19578;hp=8dcaeec10091dbffd1b31256854faf60a1fe921d;hpb=413abe68f2f876befb1a4208aa3a57d9d04dd0b7;p=dbsrgits%2FDBIx-Class.git diff --git a/t/33storage_reconnect.t b/t/33storage_reconnect.t index 8dcaeec..8f1eba1 100644 --- a/t/33storage_reconnect.t +++ b/t/33storage_reconnect.t @@ -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);