Commit | Line | Data |
668f695d |
1 | #!perl |
2 | use strict; |
3 | use warnings; |
4 | |
5 | use Test::More; |
6 | |
7 | use Test::Mouse qw(does_ok); |
8 | |
9 | BEGIN{ |
10 | package MyMouseX::Foo::Method; |
11 | use Mouse::Role; |
12 | |
13 | sub foo {} |
14 | |
15 | package MyMouseX::Bar::Method; |
16 | use Mouse::Role; |
17 | |
18 | sub bar {} |
19 | |
20 | package MyMouseX::Foo; |
21 | use Mouse::Exporter; |
22 | use Mouse::Util::MetaRole; |
23 | |
24 | Mouse::Exporter->setup_import_methods( |
25 | also => 'Mouse', |
26 | ); |
27 | sub init_meta { |
28 | my(undef, %options) = @_; |
29 | |
30 | my $meta = Mouse->init_meta(%options); |
31 | Mouse::Util::MetaRole::apply_metaroles( |
32 | for => $options{for_class}, |
33 | class_metaroles => { |
34 | method => ['MyMouseX::Foo::Method'], |
35 | }, |
36 | ); |
37 | } |
38 | |
39 | $INC{'MyMouseX/Foo.pm'} = __FILE__; |
40 | |
41 | package MyMouseX::Bar; |
42 | use Mouse::Exporter; |
43 | use Mouse::Util::MetaRole; |
44 | |
45 | Mouse::Exporter->setup_import_methods( |
46 | also => 'Mouse', |
47 | ); |
48 | sub init_meta { |
49 | my(undef, %options) = @_; |
50 | |
51 | my $meta = Mouse->init_meta(%options); |
52 | Mouse::Util::MetaRole::apply_metaroles( |
53 | for => $options{for_class}, |
54 | class_metaroles => { |
55 | method => ['MyMouseX::Bar::Method'], |
56 | }, |
57 | ); |
58 | } |
59 | |
60 | $INC{'MyMouseX/Bar.pm'} = __FILE__; |
61 | } |
62 | { |
63 | package ClassA; |
64 | use MyMouseX::Foo; |
65 | |
66 | sub a {} |
67 | |
68 | package ClassB; |
69 | use MyMouseX::Bar; |
70 | |
71 | sub b {} |
72 | } |
73 | |
74 | does_ok(ClassA->meta->get_method('a'), 'MyMouseX::Foo::Method'); |
75 | does_ok(ClassB->meta->get_method('b'), 'MyMouseX::Bar::Method'); |
76 | |
77 | done_testing; |