From: Brian Cassidy Date: Fri, 27 Jun 2008 12:06:54 +0000 (+0000) Subject: rescue :PathPrefix from an old branch X-Git-Tag: 5.7099_04~55 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=e5d2cfdb03e4f8678893e7ceb550f2b4303f2d3a rescue :PathPrefix from an old branch --- diff --git a/Changes b/Changes index 72fab69..33ce8a1 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ # This file documents the revision history for Perl extension Catalyst. +5.7XXXX XXXX + - Added PathPrefix attribute + 5.7099_01 2008-06-25 22:36:00 - Refactored component resolution (component(), models(), model(), et al). We now throw warnings for two reasons: diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 3ccfc35..03d443a 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -279,6 +279,11 @@ sub _parse_LocalRegex_attr { sub _parse_LocalRegexp_attr { shift->_parse_LocalRegex_attr(@_); } +sub _parse_PathPrefix_attr { + my $self = shift; + return PathPart => $self->path_prefix; +} + sub _parse_ActionClass_attr { my ( $self, $c, $name, $value ) = @_; unless ( $value =~ s/^\+// ) { @@ -346,8 +351,8 @@ overridden from the "namespace" config key. =head2 $self->path_prefix($c) -Returns the default path prefix for :Local, :LocalRegex and relative -:Path actions in this component. Defaults to the action_namespace or +Returns the default path prefix for :PathPrefix, :Local, :LocalRegex and +relative :Path actions in this component. Defaults to the action_namespace or can be overridden from the "path" config key. =head2 $self->create_action(%args) diff --git a/t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm b/t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm new file mode 100644 index 0000000..0d3b859 --- /dev/null +++ b/t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm @@ -0,0 +1,12 @@ +package TestApp::Controller::Action::Chained::PathPrefix; + +use strict; +use warnings; + +use base qw/Catalyst::Controller/; + +# this is kinda the same thing as: sub instance : Path {} +# it should respond to: /action/chained/pathprefix/* +sub instance : Chained('/') PathPrefix Args(1) { } + +1; diff --git a/t/live_component_controller_action_chained.t b/t/live_component_controller_action_chained.t index 708fc67..9cb6bf4 100644 --- a/t/live_component_controller_action_chained.t +++ b/t/live_component_controller_action_chained.t @@ -10,7 +10,7 @@ our $iters; BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; } -use Test::More tests => 124*$iters; +use Test::More tests => 127*$iters; use Catalyst::Test 'TestApp'; if ( $ENV{CAT_BENCHMARK} ) { @@ -863,4 +863,23 @@ sub run_tests { } + # + # PathPrefix + # + { + my @expected = qw[ + TestApp::Controller::Action::Chained->begin + TestApp::Controller::Action::Chained::PathPrefix->instance + TestApp::Controller::Action::Chained->end + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/chained/pathprefix/1'), + "PathPrefix (as an endpoint)" ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, '; 1', 'Content OK' ); + } + }