Add tests for memory leaks
[gitmo/Moose.git] / t / bugs / memory_leaks.t
1 use strict;
2 use warnings;
3
4 use Test::Requires {
5     'Test::LeakTrace' => '0.01',
6 };
7
8 use Test::More;
9
10 use Moose;
11
12 {
13     package MyRole;
14     use Moose::Role;
15     sub myname { "I'm a role" }
16 }
17
18 no_leaks_ok(
19     sub {
20         Moose::Meta::Class->create_anon_class->new_object;
21     },
22     'anonymous class with no roles is leak-free'
23 );
24
25 no_leaks_ok(
26     sub {
27         Moose::Meta::Role->initialize('MyRole2');
28     },
29     'Moose::Meta::Role->initialize is leak-free'
30 );
31
32 no_leaks_ok(
33     sub {
34         Moose::Meta::Class->create('MyClass2')->new_object;
35     },
36     'creating named class is leak-free'
37 );
38
39 no_leaks_ok(
40     sub {
41         Moose::Meta::Class->create( 'MyClass', roles => ['MyRole'] )
42             ->new_object;
43     },
44     'named class with roles is leak-free'
45 );
46
47 no_leaks_ok(
48     sub {
49         Moose::Meta::Role->create_anon_role;
50     },
51     'anonymous role is leak-free'
52 );
53
54 no_leaks_ok(
55     sub {
56         my $meta = Moose::Meta::Class->create_anon_class;
57         $meta->make_immutable;
58         $meta->new_object;
59     },
60     'making an anon class immutable is leak-free'
61 );
62
63 done_testing;