X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flive%2Fcomponent%2Fcontroller%2Faction%2Fauto.t;h=acc3ca78862cd25cd572e8033570d866ab97a7f3;hb=57e4592849c4ec6ba7a0dea780ce8b2aa2de5606;hp=ce7a4de293ab0f35ce5c57be667f27248161ae7f;hpb=e1bf532b9461ab134abe5664a4438420f4eb33f5;p=catagits%2FCatalyst-Runtime.git diff --git a/t/live/component/controller/action/auto.t b/t/live/component/controller/action/auto.t index ce7a4de..acc3ca7 100644 --- a/t/live/component/controller/action/auto.t +++ b/t/live/component/controller/action/auto.t @@ -6,105 +6,126 @@ use warnings; use FindBin; use lib "$FindBin::Bin/../../../lib"; -use Test::More tests => 18; -use Catalyst::Test 'TestApp'; - -# test auto + local method -{ - my @expected = qw[ - TestApp::Controller::Action::Auto->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto->one - ]; - - my $expected = join( ", ", @expected ); - - ok( my $response = request('http://localhost/action/auto/one'), 'auto + local' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'one', 'Content OK' ); -} - -# test auto + default -{ - my @expected = qw[ - TestApp::Controller::Action::Auto->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto->default - ]; - - my $expected = join( ", ", @expected ); - - ok( my $response = request('http://localhost/action/auto/anything'), 'auto + default' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'default', 'Content OK' ); -} - -# test auto + auto + local -{ - my @expected = qw[ - TestApp::Controller::Action::Auto::Deep->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto::Deep->auto - TestApp::Controller::Action::Auto::Deep->one - ]; +our $iters; - my $expected = join( ", ", @expected ); +BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 2; } - ok( my $response = request('http://localhost/action/auto/deep/one'), 'auto + auto + local' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'deep one', 'Content OK' ); -} - -# test auto + auto + default -{ - my @expected = qw[ - TestApp::Controller::Action::Auto::Deep->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto::Deep->auto - TestApp::Controller::Action::Auto::Deep->default - ]; - - my $expected = join( ", ", @expected ); +use Test::More tests => 18*$iters; +use Catalyst::Test 'TestApp'; - ok( my $response = request('http://localhost/action/auto/deep/anything'), 'auto + auto + default' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'deep default', 'Content OK' ); +if ( $ENV{CAT_BENCHMARK} ) { + require Benchmark; + Benchmark::timethis( $iters, \&run_tests ); + + # new dispatcher: + # 11 wallclock secs (10.14 usr + 0.20 sys = 10.34 CPU) @ 15.18/s (n=157) + # old dispatcher (r1486): + # 11 wallclock secs (10.34 usr + 0.20 sys = 10.54 CPU) @ 13.76/s (n=145) } - -# test auto + failing auto + local + end -{ - my @expected = qw[ - TestApp::Controller::Action::Auto::Abort->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto::Abort->auto - TestApp::Controller::Action::Auto::Abort->end - ]; - - my $expected = join( ", ", @expected ); - - ok( my $response = request('http://localhost/action/auto/abort/one'), 'auto + failing auto + local' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'abort end', 'Content OK' ); +else { + for ( 1 .. $iters ) { + run_tests(); + } } - -# test auto + failing auto + default + end -{ - my @expected = qw[ - TestApp::Controller::Action::Auto::Abort->begin - TestApp::Controller::Action::Auto->auto - TestApp::Controller::Action::Auto::Abort->auto - TestApp::Controller::Action::Auto::Abort->end - ]; - - my $expected = join( ", ", @expected ); - - ok( my $response = request('http://localhost/action/auto/abort/anything'), 'auto + failing auto + default' ); - is( $response->header('X-Catalyst-Executed'), - $expected, 'Executed actions' ); - is( $response->content, 'abort end', 'Content OK' ); + +sub run_tests { + # test auto + local method + { + my @expected = qw[ + TestApp::Controller::Action::Auto->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto->one + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/one'), 'auto + local' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'one', 'Content OK' ); + } + + # test auto + default + { + my @expected = qw[ + TestApp::Controller::Action::Auto->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto->default + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/anything'), 'auto + default' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'default', 'Content OK' ); + } + + # test auto + auto + local + { + my @expected = qw[ + TestApp::Controller::Action::Auto::Deep->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto::Deep->auto + TestApp::Controller::Action::Auto::Deep->one + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/deep/one'), 'auto + auto + local' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'deep one', 'Content OK' ); + } + + # test auto + auto + default + { + my @expected = qw[ + TestApp::Controller::Action::Auto::Deep->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto::Deep->auto + TestApp::Controller::Action::Auto::Deep->default + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/deep/anything'), 'auto + auto + default' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'deep default', 'Content OK' ); + } + + # test auto + failing auto + local + end + { + my @expected = qw[ + TestApp::Controller::Action::Auto::Abort->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto::Abort->auto + TestApp::Controller::Action::Auto::Abort->end + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/abort/one'), 'auto + failing auto + local' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'abort end', 'Content OK' ); + } + + # test auto + failing auto + default + end + { + my @expected = qw[ + TestApp::Controller::Action::Auto::Abort->begin + TestApp::Controller::Action::Auto->auto + TestApp::Controller::Action::Auto::Abort->auto + TestApp::Controller::Action::Auto::Abort->end + ]; + + my $expected = join( ", ", @expected ); + + ok( my $response = request('http://localhost/action/auto/abort/anything'), 'auto + failing auto + default' ); + is( $response->header('X-Catalyst-Executed'), + $expected, 'Executed actions' ); + is( $response->content, 'abort end', 'Content OK' ); + } }