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