X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F33storage_reconnect.t;h=8f1eba15a7c5f46320428b9df44232b180173096;hb=b6883aee2545ab07808ac04bc8409fc163b62a5c;hp=34dae6d26241983e63c656657d17891e7503a23a;hpb=fcf741b1334db25606be7a92d24ddcf627477c2c;p=dbsrgits%2FDBIx-Class.git diff --git a/t/33storage_reconnect.t b/t/33storage_reconnect.t index 34dae6d..8f1eba1 100644 --- a/t/33storage_reconnect.t +++ b/t/33storage_reconnect.t @@ -7,7 +7,7 @@ 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"; @@ -20,7 +20,13 @@ 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);