Commit | Line | Data |
fa627596 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More tests => 1; |
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 | |
8a951e2c |
31 | TODO: { |
32 | local $TODO = "the error message says Role::A excludes Role::A..??!"; |
33 | throws_ok { |
34 | Moose::Meta::Class->create_anon_class( |
35 | roles => [ 'Role::A', excludes_roles('Role::A') ], |
36 | ); |
37 | } qr/^Conflict detected: Moose::Meta::Role::__ANON__::SERIAL::\d+ excludes role 'Role::A'/; |
38 | }; |
fa627596 |
39 | |
40 | #lives_ok { |
41 | # Moose::Meta::Class->create_anon_class( |
42 | # methods => { |
43 | # alpha => sub {}, |
44 | # }, |
45 | # roles => [ requires_names('alpha') ], |
46 | # ); |
47 | #}; |
48 | # |
49 | #throws_ok { |
50 | # Moose::Meta::Class->create_anon_class( |
51 | # methods => { |
52 | # alpha => sub {}, |
53 | # }, |
54 | # roles => [ requires_names('alpha', 'beta') ], |
55 | # ); |
56 | #} qr/'Moose::Meta::Role::__ANON__::SERIAL::\d+\|Moose::Meta::Role::__ANON__::SERIAL::\d+' requires the method 'beta' to be implemented by 'Class::MOP::Class::__ANON__::SERIAL::\d+'/; |
57 | # |
58 | #throws_ok { |
59 | # Moose::Meta::Class->create_anon_class( |
60 | # methods => { |
61 | # beta => sub {}, |
62 | # }, |
63 | # roles => [ requires_names('alpha', 'beta') ], |
64 | # ); |
65 | #} qr/'Moose::Meta::Role::__ANON__::SERIAL::\d+\|Moose::Meta::Role::__ANON__::SERIAL::\d+' requires the method 'alpha' to be implemented by 'Class::MOP::Class::__ANON__::SERIAL::\d+'/; |
66 | # |
67 | #lives_ok { |
68 | # Moose::Meta::Class->create_anon_class( |
69 | # methods => { |
70 | # alpha => sub {}, |
71 | # beta => sub {}, |
72 | # }, |
73 | # roles => [ requires_names('alpha', 'beta') ], |
74 | # ); |
75 | #}; |
76 | # |