Move t/*/t into t/001_mouse
[gitmo/Mouse.git] / t / 001_mouse / 054-anon-leak.t
1 #!perl\r
2 # This is based on Class-MOP/t/312_anon_class_leak.t\r
3 use strict;\r
4 use warnings;\r
5 use Test::More;\r
6 \r
7 BEGIN {\r
8     eval "use Test::LeakTrace 0.10;";\r
9     plan skip_all => "Test::LeakTrace 0.10 is required for this test" if $@;\r
10 }\r
11 \r
12 plan tests => 6;\r
13 \r
14 use Mouse ();\r
15 {\r
16     package MyRole;\r
17     use Mouse::Role;\r
18 \r
19     sub my_role_method{ }\r
20 }\r
21 \r
22 # 5.10.0 has a bug on weaken($hash_ref) which leaks an AV.\r
23 my $expected = ( $] == 5.010_000 ? 1 : 0 );\r
24 \r
25 leaks_cmp_ok {\r
26     Mouse::Meta::Class->create_anon_class();\r
27 } '<=', $expected, 'create_anon_class()';\r
28 \r
29 leaks_cmp_ok {\r
30     Mouse::Meta::Class->create_anon_class(superclasses => ['Mouse::Meta::Class']);\r
31 } '<=', $expected, 'create_anon_class() with superclasses';\r
32 \r
33 leaks_cmp_ok {\r
34     Mouse::Meta::Class->create_anon_class(attributes => [\r
35         Mouse::Meta::Attribute->new('foo', is => 'bare'),\r
36     ]);\r
37 } '<=', $expected, 'create_anon_class() with attributes';\r
38 \r
39 leaks_cmp_ok {\r
40     Mouse::Meta::Class->create_anon_class(roles => [qw(MyRole)]);\r
41 } '<=', $expected, 'create_anon_class() with roles';\r
42 \r
43 \r
44 leaks_cmp_ok {\r
45     Mouse::Meta::Role->create_anon_role();\r
46 } '<=', $expected, 'create_anon_role()';\r
47 \r
48 leaks_cmp_ok {\r
49     Mouse::Meta::Role->create_anon_role(roles => [qw(MyRole)]);\r
50 } '<=', $expected, 'create_anon_role() with roles';\r
51 \r