From: Brandon L. Black Date: Tue, 12 Jun 2007 06:10:52 +0000 (+0000) Subject: add some storage exception tests, and fix a really obscure bug in DBIC::S::DBI::Curso... X-Git-Tag: v0.08010~150^2~8 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=19fb85209b09245427780b1979f144370c621280;p=dbsrgits%2FDBIx-Class.git add some storage exception tests, and fix a really obscure bug in DBIC::S::DBI::Cursor::DESTROY --- diff --git a/lib/DBIx/Class/Storage/DBI/Cursor.pm b/lib/DBIx/Class/Storage/DBI/Cursor.pm index e46c1b6..e6ff5dd 100644 --- a/lib/DBIx/Class/Storage/DBI/Cursor.pm +++ b/lib/DBIx/Class/Storage/DBI/Cursor.pm @@ -164,6 +164,7 @@ sub DESTROY { my ($self) = @_; # None of the reasons this would die matter if we're in DESTROY anyways + local $@; eval { $self->{sth}->finish if $self->{sth} && $self->{sth}->{Active} }; } diff --git a/t/92storage.t b/t/92storage.t index 5c69f30..6eee862 100644 --- a/t/92storage.t +++ b/t/92storage.t @@ -32,22 +32,31 @@ use DBICTest; } } -plan tests => 3; +plan tests => 5; my $schema = DBICTest->init_schema(); is( ref($schema->storage), 'DBIx::Class::Storage::DBI::SQLite', 'Storage reblessed correctly into DBIx::Class::Storage::DBI::SQLite' ); - my $storage = $schema->storage; $storage->ensure_connected; +eval { + $schema->storage->throw_exception('test_exception_42'); +}; +like($@, qr/\btest_exception_42\b/, 'basic exception'); + +eval { + $schema->resultset('CD')->search_literal('broken +%$#$1')->all; +}; +like($@, qr/prepare_cached failed/, 'exception via DBI->HandleError, etc'); + bless $storage, "DBICTest::ExplodingStorage"; $schema->storage($storage); eval { - $schema->resultset('Artist')->create({ name => "Exploding Sheep" }) + $schema->resultset('Artist')->create({ name => "Exploding Sheep" }); }; is($@, "", "Exploding \$sth->execute was caught");