diff options
Diffstat (limited to 't/metaclasses/moose_w_metaclass.t')
-rw-r--r-- | t/metaclasses/moose_w_metaclass.t | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/t/metaclasses/moose_w_metaclass.t b/t/metaclasses/moose_w_metaclass.t new file mode 100644 index 0000000..41f9de0 --- /dev/null +++ b/t/metaclasses/moose_w_metaclass.t @@ -0,0 +1,54 @@ +use strict; +use warnings; + +use Test::More; + + +=pod + +This test demonstrates that Moose will respect +a metaclass previously set with the metaclass +pragma. + +It also checks an error condition where that +metaclass must be a Moose::Meta::Class subclass +in order to work. + +=cut + + +{ + package Foo::Meta; + use strict; + use warnings; + + use parent 'Moose::Meta::Class'; + + package Foo; + use strict; + use warnings; + use metaclass 'Foo::Meta'; + ::use_ok('Moose'); +} + +isa_ok(Foo->meta, 'Foo::Meta'); + +{ + package Bar::Meta; + use strict; + use warnings; + + use parent 'Class::MOP::Class'; + + package Bar; + use strict; + use warnings; + use metaclass 'Bar::Meta'; + eval 'use Moose;'; + ::ok($@, '... could not load moose without correct metaclass'); + ::like($@, + qr/^Bar already has a metaclass, but it does not inherit Moose::Meta::Class/, + '... got the right error too'); +} + +done_testing; |