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