Import t/050_metaclass from Moose
[gitmo/Mouse.git] / t / 050_metaclasses / failing / 003_moose_w_metaclass.t
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 }