X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fstorage%2Ferror.t;h=d5980eb361c552cebbed63caf96a1796bd2983d3;hb=1f9712ad52d92dd562fcda6e1846370d45342a13;hp=e57d892764b9a7bf11c3fb65d0ced5c79114b0a3;hpb=56166f36313355d502a6517bf3316252d92d375a;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/storage/error.t b/t/storage/error.t index e57d892..d5980eb 100644 --- a/t/storage/error.t +++ b/t/storage/error.t @@ -6,15 +6,46 @@ use Test::Warn; use Test::Exception; use lib qw(t/lib); -use_ok( 'DBICTest' ); -use_ok( 'DBICTest::Schema' ); +use DBICTest; my $schema = DBICTest->init_schema; warnings_are ( sub { - throws_ok (sub { - $schema->resultset('CD')->create({ title => 'vacation in antarctica' }); - }, qr/NULL/); # as opposed to some other error + throws_ok ( + sub { + $schema->resultset('CD')->create({ title => 'vacation in antarctica' }) + }, + qr/DBI Exception.+cd\.artist.+NULL/s + ); # as opposed to some other error }, [], 'No warnings besides exception' ); +my $dbh = $schema->storage->dbh; + +throws_ok ( + sub { + $dbh->do ('INSERT INTO nonexistent_table VALUES (1)') + }, + qr/DBI Exception.+no such table.+nonexistent_table/s, + 'DBI exceptions properly handled by dbic-installed callback' +); + +# This usage is a bit unusual but it was actually seen in the wild +# destruction of everything except the $dbh should use the proper +# exception fallback: + +SKIP: { + if (DBIx::Class::_ENV_::PEEPEENESS) { + skip "Your perl version $] appears to leak like a sieve - skipping garbage collected \$schema test", 1; + } + + undef ($schema); + throws_ok ( + sub { + $dbh->do ('INSERT INTO nonexistent_table VALUES (1)') + }, + qr/DBI Exception.+unhandled by DBIC.+no such table.+nonexistent_table/s, + 'callback works after $schema is gone' + ); +} + done_testing;