X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F34exception_action.t;h=e19ef1f9f3bad391235e6158b1db3ac265a81918;hb=4549ba4966c026a49409c7dde70f32b2512250b0;hp=8fd70bac853a417610f62f4038bea90e2e665e84;hpb=b2f408f3651f1f86865e4f850858fe73ad18a084;p=dbsrgits%2FDBIx-Class.git diff --git a/t/34exception_action.t b/t/34exception_action.t index 8fd70ba..e19ef1f 100644 --- a/t/34exception_action.t +++ b/t/34exception_action.t @@ -1,12 +1,12 @@ use strict; -use warnings; +use warnings; use Test::More; +use Test::Exception; +use Test::Warn; use lib qw(t/lib); use DBICTest; -plan tests => 8; - # Set up the "usual" sqlite for DBICTest my $schema = DBICTest->init_schema; @@ -18,29 +18,42 @@ sub throwex { $schema->resultset("Artist")->search(1,1,1); } my $ex_regex = qr/Odd number of arguments to search/; # Basic check, normal exception -eval { throwex }; -my $e = $@; # like() seems to stringify $@ -like($@, $ex_regex); +throws_ok { throwex } + $ex_regex; + +my $e = $@; # Re-throw the exception with rethrow() -eval { $e->rethrow }; +throws_ok { $e->rethrow } + $ex_regex; isa_ok( $@, 'DBIx::Class::Exception' ); -like($@, $ex_regex); # Now lets rethrow via exception_action $schema->exception_action(sub { die @_ }); -eval { throwex }; -like($@, $ex_regex); +throws_ok { throwex } + $ex_regex; +# +# This should have never worked!!! +# # Now lets suppress the error $schema->exception_action(sub { 1 }); -eval { throwex }; -ok(!$@, "Suppress exception"); +throws_ok { throwex } + qr/exception_action handler .+ did \*not\* result in an exception.+original error: $ex_regex/; # Now lets fall through and let croak take back over $schema->exception_action(sub { return }); -eval { throwex }; -like($@, $ex_regex); +throws_ok { + warnings_are { throwex } + qr/exception_action handler installed .+ returned false instead throwing an exception/; +} $ex_regex; + +# again to see if no warning +throws_ok { + warnings_are { throwex } + []; +} $ex_regex; + # Whacky useless exception class { @@ -62,9 +75,11 @@ like($@, $ex_regex); # Try the exception class $schema->exception_action(sub { DBICTest::Exception->throw(@_) }); -eval { throwex }; -like($@, qr/DBICTest::Exception is handling this: $ex_regex/); +throws_ok { throwex } + qr/DBICTest::Exception is handling this: $ex_regex/; # While we're at it, lets throw a custom exception through Storage::DBI -eval { $schema->storage->throw_exception('floob') }; -like($@, qr/DBICTest::Exception is handling this: floob/); +throws_ok { $schema->storage->throw_exception('floob') } + qr/DBICTest::Exception is handling this: floob/; + +done_testing;