Reduce test cases to minimal code which causes a leak
[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 {
dc77c65e 42 Moose::Meta::Class->create( 'MyClass', roles => ['MyRole'] );
98f27a2f 43 },
44 'named class with roles is leak-free'
45);
46
47no_leaks_ok(
48 sub {
1b0b5ee1 49 Moose::Meta::Role->create( 'MyRole2', roles => ['MyRole'] );
50 },
51 'named role with roles is leak-free'
52);
53
54no_leaks_ok(
55 sub {
56 my $object = Moose::Meta::Class->create('MyClass2')->new_object;
57 apply_all_roles( $object, 'MyRole' );
58 },
59 'applying role to an instance is leak-free'
60);
61
62no_leaks_ok(
63 sub {
98f27a2f 64 Moose::Meta::Role->create_anon_role;
65 },
66 'anonymous role is leak-free'
67);
68
69no_leaks_ok(
70 sub {
71 my $meta = Moose::Meta::Class->create_anon_class;
72 $meta->make_immutable;
98f27a2f 73 },
74 'making an anon class immutable is leak-free'
75);
76
77done_testing;