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