X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F030_roles%2Ffailing%2F011_overriding.t;h=89e1668ffeff92ff2af6f8cb753aa71f7c10cb34;hb=6cfa1e5e70616fb102915489c02d8347ffa912fb;hp=01df0c3b426bc53cf5e9f44bf2e8186b4ab8927c;hpb=6719984210754e8d012ae678536f194c35000823;p=gitmo%2FMouse.git diff --git a/t/030_roles/failing/011_overriding.t b/t/030_roles/failing/011_overriding.t index 01df0c3..89e1668 100644 --- a/t/030_roles/failing/011_overriding.t +++ b/t/030_roles/failing/011_overriding.t @@ -8,7 +8,7 @@ use Test::Exception; -{ +{ # test no conflicts here package Role::A; use Mouse::Role; @@ -22,7 +22,7 @@ use Test::Exception; package Role::C; use Mouse::Role; - + ::lives_ok { with qw(Role::A Role::B); # no conflict here } "define role C"; @@ -36,7 +36,7 @@ use Test::Exception; ::lives_ok { with qw(Role::C); } "define class A"; - + sub zot { 'Class::A::zot' } } @@ -49,30 +49,30 @@ is( Class::A->new->xxy, "Role::B::xxy", "... got the right xxy method" ); { # check that when a role is added to another role - # and they conflict and the method they conflicted - # with is then required. - + # and they conflict and the method they conflict + # with is then required. + package Role::A::Conflict; use Mouse::Role; - + with 'Role::A'; - + sub bar { 'Role::A::Conflict::bar' } - + package Class::A::Conflict; use Mouse; - + ::throws_ok { with 'Role::A::Conflict'; - } qr/requires.*'bar'/, '... did not fufill the requirement of &bar method'; - + } qr/Due to a method name conflict in roles 'Role::A' and 'Role::A::Conflict', the method 'bar' must be implemented or excluded by 'Class::A::Conflict'/, '... did not fufill the requirement of &bar method'; + package Class::A::Resolved; use Mouse; - + ::lives_ok { with 'Role::A::Conflict'; - } '... did fufill the requirement of &bar method'; - + } '... did fufill the requirement of &bar method'; + sub bar { 'Class::A::Resolved::bar' } } @@ -85,12 +85,12 @@ is( Class::A::Resolved->new->bar, 'Class::A::Resolved::bar', "... got the right { # check that when two roles are composed, they conflict # but the composing role can resolve that conflict - + package Role::D; use Mouse::Role; sub foo { 'Role::D::foo' } - sub bar { 'Role::D::bar' } + sub bar { 'Role::D::bar' } package Role::E; use Mouse::Role; @@ -104,17 +104,17 @@ is( Class::A::Resolved->new->bar, 'Class::A::Resolved::bar', "... got the right ::lives_ok { with qw(Role::D Role::E); # conflict between 'foo's here } "define role Role::F"; - + sub foo { 'Role::F::foo' } - sub zot { 'Role::F::zot' } - + sub zot { 'Role::F::zot' } + package Class::B; use Mouse; - + ::lives_ok { with qw(Role::F); } "define class Class::B"; - + sub zot { 'Class::B::zot' } } @@ -129,21 +129,21 @@ ok(!Role::F->meta->requires_method('foo'), '... Role::F fufilled the &foo requir { # check that a conflict can be resolved - # by a role, but also new ones can be + # by a role, but also new ones can be # created just as easily ... - + package Role::D::And::E::Conflict; use Mouse::Role; ::lives_ok { with qw(Role::D Role::E); # conflict between 'foo's here } "... define role Role::D::And::E::Conflict"; - + sub foo { 'Role::D::And::E::Conflict::foo' } # this overrides ... - - # but these conflict - sub xxy { 'Role::D::And::E::Conflict::xxy' } - sub bar { 'Role::D::And::E::Conflict::bar' } + + # but these conflict + sub xxy { 'Role::D::And::E::Conflict::xxy' } + sub bar { 'Role::D::And::E::Conflict::bar' } } @@ -153,12 +153,12 @@ ok(Role::D::And::E::Conflict->meta->requires_method('bar'), '... Role::D::And::E { # conflict propagation - + package Role::H; use Mouse::Role; sub foo { 'Role::H::foo' } - sub bar { 'Role::H::bar' } + sub bar { 'Role::H::bar' } package Role::J; use Mouse::Role; @@ -172,16 +172,16 @@ ok(Role::D::And::E::Conflict->meta->requires_method('bar'), '... Role::D::And::E ::lives_ok { with qw(Role::J Role::H); # conflict between 'foo's here } "define role Role::I"; - + sub zot { 'Role::I::zot' } sub zzy { 'Role::I::zzy' } package Class::C; use Mouse; - + ::throws_ok { with qw(Role::I); - } qr/requires.*'foo'/, "defining class Class::C fails"; + } qr/Due to a method name conflict in roles 'Role::H' and 'Role::J', the method 'foo' must be implemented or excluded by 'Class::C'/, "defining class Class::C fails"; sub zot { 'Class::C::zot' } @@ -190,10 +190,10 @@ ok(Role::D::And::E::Conflict->meta->requires_method('bar'), '... Role::D::And::E ::lives_ok { with qw(Role::I); - } "resolved with method"; + } "resolved with method"; sub foo { 'Class::E::foo' } - sub zot { 'Class::E::zot' } + sub zot { 'Class::E::zot' } } can_ok( Class::E->new, qw(foo bar xxy zot) );