X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Fhttp_exceptions.t;h=ad6544abc2405970040ad38df6de8c7b1b3a84ee;hp=c8fae7cf2a25e788bc140dc74ce376d970731301;hb=77ca88e5173274b7efab6fcc4efa5c47152d0fc0;hpb=660f9bb0ce5e5ccb7d126608cf8b908194167b59 diff --git a/t/http_exceptions.t b/t/http_exceptions.t index c8fae7c..ad6544a 100644 --- a/t/http_exceptions.t +++ b/t/http_exceptions.t @@ -30,7 +30,15 @@ use Plack::Test; $responder->([$code, $headers, $body]); }; } - + + package MyApp::AnotherException; + + sub new { bless +{}, shift } + + sub code { 400 } + + sub as_string { 'bad stringy bad' } + package MyApp::Controller::Root; use base 'Catalyst::Controller'; @@ -54,6 +62,11 @@ use Plack::Test; 403, ['content-type'=>'text/plain'], ['Forbidden']); } + sub from_code_type :Local { + my $e = MyApp::AnotherException->new; + die $e; + } + sub classic_error :Local { my ($self, $c) = @_; Catalyst::Exception->throw("Ex Parrot"); @@ -64,15 +77,19 @@ use Plack::Test; die "I'm not dead yet"; } + sub end :Private { die "We should never hit end for HTTPExceptions" } + package MyApp; use Catalyst; + MyApp->config(abort_chain_on_error_fix=>1); + sub debug { 1 } MyApp->setup_log('fatal'); } -$INC{'MyApp/Controller/Root.pm'} = '1'; # sorry... +$INC{'MyApp/Controller/Root.pm'} = __FILE__; # sorry... MyApp->setup_log('error'); Test::More::ok(MyApp->setup); @@ -84,6 +101,7 @@ test_psgi $psgi, sub { my $res = $cb->(GET "/root/from_psgi_app"); is $res->code, 404; is $res->content, 'Not Found', 'NOT FOUND'; + unlike $res->content, qr'HTTPExceptions', 'HTTPExceptions'; }; test_psgi $psgi, sub { @@ -91,6 +109,15 @@ test_psgi $psgi, sub { my $res = $cb->(GET "/root/from_catalyst"); is $res->code, 403; is $res->content, 'Forbidden', 'Forbidden'; + unlike $res->content, qr'HTTPExceptions', 'HTTPExceptions'; +}; + +test_psgi $psgi, sub { + my $cb = shift; + my $res = $cb->(GET "/root/from_code_type"); + is $res->code, 400; + is $res->content, 'bad stringy bad', 'bad stringy bad'; + unlike $res->content, qr'HTTPExceptions', 'HTTPExceptions'; }; test_psgi $psgi, sub { @@ -98,6 +125,7 @@ test_psgi $psgi, sub { my $res = $cb->(GET "/root/classic_error"); is $res->code, 500; like $res->content, qr'Ex Parrot', 'Ex Parrot'; + like $res->content, qr'HTTPExceptions', 'HTTPExceptions'; }; test_psgi $psgi, sub { @@ -105,6 +133,7 @@ test_psgi $psgi, sub { my $res = $cb->(GET "/root/just_die"); is $res->code, 500; like $res->content, qr'not dead yet', 'not dead yet'; + like $res->content, qr'HTTPExceptions', 'HTTPExceptions'; }; @@ -113,5 +142,5 @@ test_psgi $psgi, sub { # in the callbacks might never get run (thus all ran tests pass but not all # required tests run). -done_testing(10); +done_testing(17);