Commit | Line | Data |
fa627596 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
636c0aa5 |
4 | use Test::More tests => 3; |
fa627596 |
5 | use Test::Exception; |
6 | |
7 | do { |
8 | package MyRole::Excluder; |
9 | use MooseX::Role::Parameterized; |
10 | |
11 | parameter exclude => ( |
12 | is => 'rw', |
13 | isa => 'Str', |
14 | ); |
15 | |
16 | role { |
17 | my $p = shift; |
18 | excludes $p->exclude; |
19 | }; |
20 | }; |
21 | |
22 | Moose::Meta::Role->create("Role::A"); |
23 | Moose::Meta::Role->create("Role::B"); |
24 | |
25 | sub excludes_roles { |
26 | map { |
27 | MyRole::Excluder->meta->generate_role(exclude => $_)->name |
28 | } @_ |
29 | } |
30 | |
636c0aa5 |
31 | lives_ok { |
32 | Moose::Meta::Class->create_anon_class( |
33 | roles => [ excludes_roles('Role::A') ], |
34 | ); |
35 | }; |
36 | |
37 | throws_ok { |
38 | Moose::Meta::Class->create_anon_class( |
39 | roles => [ 'Role::A', excludes_roles('Role::A') ], |
40 | ); |
41 | } qr/^Conflict detected: Role Moose::Meta::Role::__ANON__::SERIAL::\d+ excludes role 'Role::A'/; |
42 | |
43 | lives_ok { |
44 | Moose::Meta::Class->create_anon_class( |
45 | roles => [ 'Role::B', excludes_roles('Role::A') ], |
46 | ); |
8a951e2c |
47 | }; |
fa627596 |
48 | |