X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Fplugin_new_method_backcompat.t;h=74e8f109f3148225703867e8cd4b5a2ecfcc0e7f;hp=781f3ab99c453be241fa55a2c2d64da8c0395ab6;hb=4ac0b9cb8e9043db8a95f44af685c782bf9426e7;hpb=01ce70757e2be0d27df667a7b0e898b0d91476ec diff --git a/t/plugin_new_method_backcompat.t b/t/plugin_new_method_backcompat.t index 781f3ab..74e8f10 100644 --- a/t/plugin_new_method_backcompat.t +++ b/t/plugin_new_method_backcompat.t @@ -8,11 +8,45 @@ # that plugins don't get it wrong for us. # Also tests method modifiers and etc in MyApp.pm still work as expected. +use Test::More tests => 3; + +{ + package NewTestPlugin; + use strict; + use warnings; + sub new { + my $class = shift; + return bless $_[0], $class; + } +} + +{ # This is all in the same file so that the setup method on the + # application is called at runtime, rather than at compile time. + # This ensures that the end of scope hook has to happen at runtime + # correctly, otherwise the test will fail (ergo the switch from + # B::Hooks::EndOfScope to Sub::Uplevel) + package TestAppPluginWithNewMethod; + use Test::Exception; + use Catalyst qw/+NewTestPlugin/; + + sub foo : Local { + my ($self, $c) = @_; + $c->res->body('foo'); + } + + use Moose; # Just testing method modifiers still work. + __PACKAGE__->setup; + our $MODIFIER_FIRED = 0; + + lives_ok { + before 'dispatch' => sub { $MODIFIER_FIRED = 1 } + } 'Can apply method modifier'; + no Moose; +} use FindBin; -use lib "$FindBin::Bin/lib";use Test::More tests => 3; +use lib "$FindBin::Bin/lib"; -use Catalyst::Test qw/TestAppPluginWithNewMethod/; # 1 test for adding a modifer not throwing. -BEGIN { warn("COMPILE TIME finished use of Catalyst::Test"); } +use Catalyst::Test qw/TestAppPluginWithNewMethod/; ok request('/foo')->is_success; is $TestAppPluginWithNewMethod::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';