Reduce test cases to minimal code which causes a leak
[gitmo/Moose.git] / t / bugs / memory_leaks.t
index ed3334a..49b3690 100644 (file)
@@ -7,7 +7,8 @@ use Test::Requires {
 
 use Test::More;
 
-use Moose;
+use Moose ();
+use Moose::Util qw( apply_all_roles );
 
 {
     package MyRole;
@@ -38,14 +39,28 @@ no_leaks_ok(
 
 no_leaks_ok(
     sub {
-        Moose::Meta::Class->create( 'MyClass', roles => ['MyRole'] )
-            ->new_object;
+        Moose::Meta::Class->create( 'MyClass', roles => ['MyRole'] );
     },
     'named class with roles is leak-free'
 );
 
 no_leaks_ok(
     sub {
+        Moose::Meta::Role->create( 'MyRole2', roles => ['MyRole'] );
+    },
+    'named role with roles is leak-free'
+);
+
+no_leaks_ok(
+    sub {
+        my $object = Moose::Meta::Class->create('MyClass2')->new_object;
+        apply_all_roles( $object, 'MyRole' );
+    },
+    'applying role to an instance is leak-free'
+);
+
+no_leaks_ok(
+    sub {
         Moose::Meta::Role->create_anon_role;
     },
     'anonymous role is leak-free'
@@ -55,7 +70,6 @@ no_leaks_ok(
     sub {
         my $meta = Moose::Meta::Class->create_anon_class;
         $meta->make_immutable;
-        $meta->new_object;
     },
     'making an anon class immutable is leak-free'
 );