bug for immutable class that does a role
[gitmo/Moose.git] / t / 100_bugs / 018_immutable_metaclass_does_role.t
CommitLineData
0e93d7b0 1
2{
3 package MyRole;
4 use Moose::Role;
5 BEGIN {
6 requires 'foo';
7 }
8 no Moose::Role;
9}
10{
11 package MyMetaclass;
12 use Moose;
13 BEGIN {
14 sub foo { 'i am foo' }
15 extends 'Moose::Meta::Class';
16 with 'MyRole';
17 }
18 no Moose;
19}
20
21{
22 package MyClass;
23 use metaclass 'MyMetaclass';
24 use Moose;
25 no Moose;
26}
27
28use Test::More tests => 5;
29
30my $a = MyClass->new;
31ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
32
33# now try combinations of having the class/metaclass made immutable
34# and run the same test
35
36MyClass->meta->make_immutable;
37ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
38
39MyClass->meta->make_mutable;
40ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
41
42MyMetaclass->meta->make_immutable;
43ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
44
45MyClass->meta->make_immutable;
46ok( $a->meta->meta->does_role('MyRole'), 'metaclass does MyRole' );
47