1use strict; 2use warnings; 3use Test::More; 4 5unless ( 6 eval { require version; require MooseX::MethodAttributes; MooseX::MethodAttributes->VERSION('0.15'); } 7) { 8 plan skip_all => 'Need MooseX::MethodAttributes 0.15 for this test'; 9 exit; 10} 11 12plan tests => 4; 13 14{ 15 package My::Role; 16 use MooseX::MethodAttributes (); 17 use Moose::Role -traits => 'MethodAttributes'; 18 19 sub foo : Action {} 20} 21 22{ 23 package My::Controller; 24 use Moose; 25 BEGIN { extends 'Catalyst::Controller'; } 26 with 'CatalystX::Component::Traits'; 27} 28 29my $app = bless {}, 'MyApp'; 30my $i = eval { My::Controller->COMPONENT($app, { traits => '+My::Role' } ) }; 31ok $i; 32ok !$@ or warn $@; 33my $meta = $i->meta; 34ok $meta->can('get_method_attributes'); 35my $attr = $meta->get_method_attributes( $i->can('foo') ); 36is_deeply $attr, ['Action']; 37 38