From: Guillermo Roditi Date: Wed, 28 May 2008 00:03:22 +0000 (+0000) Subject: add test for modifier order to prevent regressions X-Git-Tag: 0_55~136 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=06b355f7abff0f8521338316b9960046bc3e3a57;p=gitmo%2FMoose.git add test for modifier order to prevent regressions --- diff --git a/t/030_roles/026_role_composition_method_mods.t b/t/030_roles/026_role_composition_method_mods.t index 365da92..ce94eda 100644 --- a/t/030_roles/026_role_composition_method_mods.t +++ b/t/030_roles/026_role_composition_method_mods.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 9; +use Test::More tests => 10; use Test::Exception; BEGIN { @@ -15,17 +15,42 @@ BEGIN { { package Role::Foo; use Moose::Role; - + before foo => sub { 'Role::Foo::foo' }; around foo => sub { 'Role::Foo::foo' }; after foo => sub { 'Role::Foo::foo' }; - + around baz => sub { [ 'Role::Foo', @{shift->(@_)} ] }; + package Role::Bar; use Moose::Role; before bar => sub { 'Role::Bar::bar' }; around bar => sub { 'Role::Bar::bar' }; after bar => sub { 'Role::Bar::bar' }; + + package Role::Baz; + use Moose::Role; + + with 'Role::Foo'; + around baz => sub { [ 'Role::Baz', @{shift->(@_)} ] }; + +} + +{ + package Class::FooBar; + use Moose; + + with 'Role::Baz'; + sub foo { 'placeholder' } + sub baz { ['Class::FooBar'] } +} + +#test modifier call order +{ + is_deeply( + Class::FooBar->baz, + ['Role::Baz','Role::Foo','Class::FooBar'] + ); } # test simple overrides @@ -39,26 +64,26 @@ BEGIN { isa_ok($c, 'Moose::Meta::Role::Composite'); is($c->name, 'Role::Foo|Role::Bar', '... got the composite role name'); - + lives_ok { Moose::Meta::Role::Application::RoleSummation->new->apply($c); } '... this succeeds as expected'; - + is_deeply( [ sort $c->get_method_modifier_list('before') ], [ 'bar', 'foo' ], '... got the right list of methods' ); - + is_deeply( [ sort $c->get_method_modifier_list('after') ], [ 'bar', 'foo' ], '... got the right list of methods' ); - + is_deeply( [ sort $c->get_method_modifier_list('around') ], - [ 'bar', 'foo' ], + [ 'bar', 'baz', 'foo' ], '... got the right list of methods' ); -} \ No newline at end of file +}