X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F34exception_action.t;h=aa803eb238bada7b3e1e2693e38f39c096bc427a;hb=HEAD;hp=c9c0f6b815dcbb25c875820235eb2ee87ba7937d;hpb=c0329273268971824784f239f32c7246e68da9c5;p=dbsrgits%2FDBIx-Class.git diff --git a/t/34exception_action.t b/t/34exception_action.t index c9c0f6b..aa803eb 100644 --- a/t/34exception_action.t +++ b/t/34exception_action.t @@ -6,6 +6,7 @@ use warnings; use Test::More; use Test::Exception; use Test::Warn; +use Scalar::Util 'weaken'; use DBICTest; @@ -102,14 +103,14 @@ for my $ap (qw( # make sure an exception_action can replace $@ with an antipattern $schema->exception_action(sub { die $ap->new }); - warnings_like { + warnings_exist { eval { $throw->() }; isa_ok $@, $ap; } $exp_warn, 'proper warning on antipattern encountered within exception_action'; # and make sure that the rethrow works $schema->exception_action(sub { die @_ }); - warnings_like { + warnings_exist { eval { $schema->txn_do (sub { die $ap->new }); }; @@ -118,4 +119,19 @@ for my $ap (qw( } $exp_warn, 'Proper warning on encountered antipattern'; } +# ensure we do not get into an infloop +{ + weaken( my $s = $schema ); + + $schema->exception_action(sub{ + $s->throw_exception(@_) + }); + + throws_ok { + $schema->storage->dbh_do(sub { + $_[1]->do('wgwfwfwghawhjsejsethjwetjesjesjsejsetjes') + } ) + } qr/syntax error/i; +} + done_testing;