- Provide an extension so that components can have a Moose::Object
constructor and an @ISA which makes c3 happy on both 5.7X and 5.8X.
+ - $self->config should warn as config should only ever be called as a
+ class method.
+
Testing:
- Run more smokes
BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
-use Test::More tests => 21*$iters;
+use Test::More tests => 26*$iters;
use Catalyst::Test 'TestApp';
if ( $ENV{CAT_BENCHMARK} ) {
'Content is a serialized Catalyst::Request'
);
}
+
+ {
+ my @expected = qw[
+ TestApp::Controller::Action::Inheritance->begin
+ TestApp::Controller::Action::Inheritance->auto
+ TestApp::Controller::Action::Inheritance::Chained->chain_root
+ TestApp::Controller::Action::Inheritance::Chained->chain_first
+ TestApp::Controller::Action::Inheritance::Chained->chain_middle
+ TestApp::Controller::Action::Inheritance::Chained->chain_end
+ TestApp::Controller::Action::Inheritance->end
+ ];
+
+ my $expected = join( ", ", @expected );
+
+ ok( my $response = request('http://localhost/action/inheritance/chained/chain_end'),
+ 'Request' );
+ ok( $response->is_success, 'Response Successful 2xx' );
+ is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ is( $response->header('X-Catalyst-Action'), '/action/inheritance/chained/chain_end', 'Test Action' );
+ is( $response->header('X-Catalyst-Executed'),
+ $expected, 'Executed actions' );
+ }
}
--- /dev/null
+package TestApp::ControllerBase::Middle;
+
+use Moose;
+
+use namespace::clean -except => 'meta';
+
+BEGIN { extends qw/TestApp::ControllerBase::Root/; }
+
+__PACKAGE__->meta->make_immutable;
+
+1;
--- /dev/null
+package TestApp::ControllerBase::OtherRoot;
+
+use Moose;
+
+use namespace::clean -except => 'meta';
+
+BEGIN { extends qw/Catalyst::Controller/; }
+
+sub chain_middle : CaptureArgs(0) PathPart('') Chained('chain_first') {}
+
+__PACKAGE__->meta->make_immutable;
+
+1;
--- /dev/null
+package TestApp::ControllerBase::RealMiddle;
+
+use Moose;
+
+use namespace::clean -except => 'meta';
+
+BEGIN { extends qw/TestApp::ControllerBase::OtherRoot/; }
+
+__PACKAGE__->meta->make_immutable;
+
+1;
--- /dev/null
+package TestApp::ControllerBase::Root;
+
+use Moose;
+
+use namespace::clean -except => 'meta';
+
+BEGIN { extends qw/Catalyst::Controller/; }
+
+sub chain_root : Chained('/') PathPrefix CaptureArgs(0) {}
+
+sub chain_end : Chained('chain_middle') Args(0) {}
+
+__PACKAGE__->meta->make_immutable;
+
+1;