Commit | Line | Data |
98f27a2f |
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; |