#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 12;
+use Test::More;
{
package FooTrait;
isa_ok($meta->meta, 'Moose::Meta::Class');
ok($meta->is_mutable, "class is mutable");
ok(Class::MOP::class_of($meta)->is_mutable, "metaclass is mutable");
+ok($meta->meta->does_role('FooTrait'), "does the trait");
Foo->meta->make_immutable;
is(Class::MOP::class_of('Foo'), Foo->meta,
"class_of and ->meta are the same on Foo (immutable)");
$meta = Foo->meta;
isa_ok($meta->meta, 'Moose::Meta::Class');
ok($meta->is_immutable, "class is immutable");
-ok($meta->meta->is_mutable, "metaclass is mutable (immutable class)");
-TODO: {
- local $TODO = "immutable metaclasses with traits do weird things";
- is(Class::MOP::class_of($meta), $meta->meta,
- "class_of and ->meta are the same on Foo's metaclass (immutable)");
- isa_ok(Class::MOP::class_of($meta), 'Moose::Meta::Class');
-}
+ok($meta->meta->is_immutable, "metaclass is immutable (immutable class)");
+is(Class::MOP::class_of($meta), $meta->meta,
+ "class_of and ->meta are the same on Foo's metaclass (immutable)");
+isa_ok(Class::MOP::class_of($meta), 'Moose::Meta::Class');
+ok($meta->meta->does_role('FooTrait'), "still does the trait after immutable");
+
+done_testing;