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=7aaef8bb6571d0bedc440e34a792349c68f043f8;hb=4ac0b9cb8e9043db8a95f44af685c782bf9426e7;hpb=eb7d1369a13ed9a451972f256d1ded95966753aa diff --git a/t/plugin_new_method_backcompat.t b/t/plugin_new_method_backcompat.t index 7aaef8b..74e8f10 100644 --- a/t/plugin_new_method_backcompat.t +++ b/t/plugin_new_method_backcompat.t @@ -8,10 +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. +use Catalyst::Test qw/TestAppPluginWithNewMethod/; ok request('/foo')->is_success; is $TestAppPluginWithNewMethod::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';