From: Hans Dieter Pearcey Date: Sat, 28 Mar 2009 05:01:57 +0000 (+0000) Subject: include test for failure mode X-Git-Tag: 5.80001~43^2~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=4ac0b9cb8e9043db8a95f44af685c782bf9426e7 include test for failure mode --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 005df7a..9c5bc8c 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1250,6 +1250,9 @@ sub uri_for_action { my $action = blessed($path) ? $path : $c->dispatcher->get_action_by_path($path); + unless (defined $action) { + croak "Can't find action for path '$path'"; + } return $c->uri_for( $action, @args ); } diff --git a/t/aggregate/unit_core_uri_for_action.t b/t/aggregate/unit_core_uri_for_action.t index 8336779..499a1c7 100644 --- a/t/aggregate/unit_core_uri_for_action.t +++ b/t/aggregate/unit_core_uri_for_action.t @@ -8,7 +8,7 @@ use lib "$FindBin::Bin/../lib"; use Test::More; -plan tests => 28; +plan tests => 29; use_ok('TestApp'); @@ -164,6 +164,10 @@ is($context->uri_for($chained_action, [ 1 ], 2, { q => 1 }), is( $context->uri_for_action( $complex_chained, [23], (13), {q => 3} ), 'http://127.0.0.1/foo/chained/empty/23/13?q=3', 'uri_for_action returns correct uri for chain with many empty path parts' ); -} + eval { $context->uri_for_action( '/does/not/exist' ) }; + like $@, qr{^Can't find action for path '/does/not/exist'}, + 'uri_for_action croaks on nonexistent path'; + +}