Don't dig into meta method objects directly
[gitmo/Moose.git] / t / metaclasses / moose_w_metaclass.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8
9 =pod
10
11 This test demonstrates that Moose will respect
12 a metaclass previously set with the metaclass
13 pragma.
14
15 It also checks an error condition where that
16 metaclass must be a Moose::Meta::Class subclass
17 in order to work.
18
19 =cut
20
21
22 {
23     package Foo::Meta;
24     use strict;
25     use warnings;
26
27     use base 'Moose::Meta::Class';
28
29     package Foo;
30     use strict;
31     use warnings;
32     use metaclass 'Foo::Meta';
33     ::use_ok('Moose');
34 }
35
36 isa_ok(Foo->meta, 'Foo::Meta');
37
38 {
39     package Bar::Meta;
40     use strict;
41     use warnings;
42
43     use base 'Class::MOP::Class';
44
45     package Bar;
46     use strict;
47     use warnings;
48     use metaclass 'Bar::Meta';
49     eval 'use Moose;';
50     ::ok($@, '... could not load moose without correct metaclass');
51     ::like($@,
52         qr/^Bar already has a metaclass, but it does not inherit Moose::Meta::Class/,
53         '... got the right error too');
54 }
55
56 done_testing;