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 | |
1b0b5ee1 |
10 | use Moose (); |
11 | use 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 | |
19 | no_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 | |
26 | no_leaks_ok( |
27 | sub { |
28 | Moose::Meta::Role->initialize('MyRole2'); |
29 | }, |
30 | 'Moose::Meta::Role->initialize is leak-free' |
31 | ); |
32 | |
33 | no_leaks_ok( |
34 | sub { |
35 | Moose::Meta::Class->create('MyClass2')->new_object; |
36 | }, |
37 | 'creating named class is leak-free' |
38 | ); |
39 | |
40 | no_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 | |
48 | no_leaks_ok( |
49 | sub { |
1b0b5ee1 |
50 | Moose::Meta::Role->create( 'MyRole2', roles => ['MyRole'] ); |
51 | }, |
52 | 'named role with roles is leak-free' |
53 | ); |
54 | |
55 | no_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 | |
63 | no_leaks_ok( |
64 | sub { |
98f27a2f |
65 | Moose::Meta::Role->create_anon_role; |
66 | }, |
67 | 'anonymous role is leak-free' |
68 | ); |
69 | |
70 | no_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 | |
79 | done_testing; |