calculate mro module once
[gitmo/Role-Tiny.git] / t / role-long-package-name.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 # using Role::Tiny->apply_roles_to_object with too many roles,
6 # It makes 'Identifier too long' error in string 'eval'.
7 # And, Moo uses string eval.
8 {
9     package R::AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;
10     use Role::Tiny;
11     package R::BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB;
12     use Role::Tiny;
13     package R::CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC;
14     use Role::Tiny;
15     package R::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD;
16     use Role::Tiny;
17     package R::EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE;
18     use Role::Tiny;
19 }
20
21 {
22     package Foo;
23     sub new { bless {}, shift }
24 }
25
26 my $foo = Foo->new();
27 for (qw(
28     R::AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
29     R::BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
30     R::CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
31     R::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
32     R::EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
33 )) {
34     Role::Tiny->apply_roles_to_object($foo, $_);
35 }
36
37 my $pkg = ref $foo;
38 eval "package $pkg;";
39 is $@, '', 'package name usable by perl'
40   or diag "package: $pkg";
41
42 done_testing;