X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F030_roles%2F005_role_conflict_detection.t;h=de640a3bf4ad1998546ed7196f01022ebe595c56;hb=da96a8f188d13f7119adabd1b7dde6b62f0402d8;hp=51ee9a0802a4f135b39b6b5e8581b261029d74ac;hpb=be0ed15704fdad5f2d8517380a6f24687432c1dd;p=gitmo%2FMoose.git diff --git a/t/030_roles/005_role_conflict_detection.t b/t/030_roles/005_role_conflict_detection.t index 51ee9a0..de640a3 100644 --- a/t/030_roles/005_role_conflict_detection.t +++ b/t/030_roles/005_role_conflict_detection.t @@ -32,16 +32,16 @@ Mutually recursive roles. package My::Test1; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Foo', 'Role::Bar'; - }, '... our mutually recursive roles combine okay'; + }, undef, '... our mutually recursive roles combine okay' ); package My::Test2; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Bar', 'Role::Foo'; - }, '... our mutually recursive roles combine okay (no matter what order)'; + }, undef, '... our mutually recursive roles combine okay (no matter what order)' ); } my $test1 = My::Test1->new; @@ -98,32 +98,32 @@ Role method conflicts package My::Test3; use Moose; - ::like ::exception { + ::like( ::exception { with 'Role::Bling', 'Role::Bling::Bling'; - }, qr/Due to a method name conflict in roles 'Role::Bling' and 'Role::Bling::Bling', the method 'bling' must be implemented or excluded by 'My::Test3'/, '... role methods conflict and method was required'; + }, qr/Due to a method name conflict in roles 'Role::Bling' and 'Role::Bling::Bling', the method 'bling' must be implemented or excluded by 'My::Test3'/, '... role methods conflict and method was required' ); package My::Test4; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Bling'; with 'Role::Bling::Bling'; - }, '... role methods didnt conflict when manually combined'; + }, undef, '... role methods didnt conflict when manually combined' ); package My::Test5; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Bling::Bling'; with 'Role::Bling'; - }, '... role methods didnt conflict when manually combined (in opposite order)'; + }, undef, '... role methods didnt conflict when manually combined (in opposite order)' ); package My::Test6; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Bling::Bling', 'Role::Bling'; - }, '... role methods didnt conflict when manually resolved'; + }, undef, '... role methods didnt conflict when manually resolved' ); sub bling { 'My::Test6::bling' } } @@ -187,36 +187,34 @@ Role attribute conflicts package My::Test7; use Moose; - ::like ::exception { + ::like( ::exception { with 'Role::Boo', 'Role::Boo::Hoo'; - }, qr/We have encountered an attribute conflict/, - '... role attrs conflict and method was required'; + }, qr/We have encountered an attribute conflict.+ghost/ ); package My::Test8; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Boo'; with 'Role::Boo::Hoo'; - }, '... role attrs didnt conflict when manually combined'; + }, undef, '... role attrs didnt conflict when manually combined' ); package My::Test9; use Moose; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Boo::Hoo'; with 'Role::Boo'; - }, '... role attrs didnt conflict when manually combined'; + }, undef, '... role attrs didnt conflict when manually combined' ); package My::Test10; use Moose; has 'ghost' => (is => 'ro', default => 'My::Test10::ghost'); - ::like ::exception { + ::like( ::exception { with 'Role::Boo', 'Role::Boo::Hoo'; - }, qr/We have encountered an attribute conflict/, - '... role attrs conflict and cannot be manually disambiguted'; + }, qr/We have encountered an attribute conflict/, '... role attrs conflict and cannot be manually disambiguted' ); } @@ -275,35 +273,34 @@ Role override method conflicts extends 'My::Test::Base'; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Truth'; - }, '... composed the role with override okay'; + }, undef, '... composed the role with override okay' ); package My::Test12; use Moose; extends 'My::Test::Base'; - ::ok ! ::exception { + ::is( ::exception { with 'Role::Plot'; - }, '... composed the role with override okay'; + }, undef, '... composed the role with override okay' ); package My::Test13; use Moose; - ::ok ::exception { + ::isnt( ::exception { with 'Role::Plot'; - }, '... cannot compose it because we have no superclass'; + }, undef, '... cannot compose it because we have no superclass' ); package My::Test14; use Moose; extends 'My::Test::Base'; - ::like ::exception { + ::like( ::exception { with 'Role::Plot', 'Role::Truth'; - }, qr/Two \'override\' methods of the same name encountered/, - '... cannot compose it because we have no superclass'; + }, qr/Two \'override\' methods of the same name encountered/, '... cannot compose it because we have no superclass' ); } ok(My::Test11->meta->has_method('twist'), '... the twist method has been added'); @@ -328,10 +325,9 @@ is(My::Test14->twist(), 'My::Test::Base::twist', '... got the right method retur package Role::Reality; use Moose::Role; - ::like ::exception { + ::like( ::exception { with 'Role::Plot'; - }, qr/A local method of the same name as been found/, - '... could not compose roles here, it dies'; + }, qr/A local method of the same name as been found/, '... could not compose roles here, it dies' ); sub twist { 'Role::Reality::twist'; @@ -361,9 +357,9 @@ is(Role::Reality->meta->get_method('twist')->(), package Conflicts; use Moose; - ::like ::exception { + ::like( ::exception { with qw(Role1 Role2); - }, qr/Due to a method name conflict in roles 'Role1' and 'Role2', the method 'foo' must be implemented or excluded by 'Conflicts'/; + }, qr/Due to a method name conflict in roles 'Role1' and 'Role2', the method 'foo' must be implemented or excluded by 'Conflicts'/ ); } =pod @@ -418,108 +414,108 @@ Now I have to decide actually what happens, and how to fix it. package My::Test15; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method'; - }, '... composed the method role into the method class'; + } '... composed the method role into the method class'; sub ghost { 'My::Test15::ghost' } package My::Test16; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method'; - }, '... composed the method role into the attribute class'; + } '... composed the method role into the attribute class'; has 'ghost' => (is => 'ro', default => 'My::Test16::ghost'); package My::Test17; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute'; - }, '... composed the attribute role into the method class'; + } '... composed the attribute role into the method class'; sub ghost { 'My::Test17::ghost' } package My::Test18; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute'; - }, '... composed the attribute role into the attribute class'; + } '... composed the attribute role into the attribute class'; has 'ghost' => (is => 'ro', default => 'My::Test18::ghost'); package My::Test19; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method', 'Role::Method2'; - }, '... composed method roles into class with method tiebreaker'; + } '... composed method roles into class with method tiebreaker'; sub ghost { 'My::Test19::ghost' } package My::Test20; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method', 'Role::Method2'; - }, '... composed method roles into class with attribute tiebreaker'; + } '... composed method roles into class with attribute tiebreaker'; has 'ghost' => (is => 'ro', default => 'My::Test20::ghost'); package My::Test21; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute', 'Role::Attribute2'; - }, '... composed attribute roles into class with method tiebreaker'; + } '... composed attribute roles into class with method tiebreaker'; sub ghost { 'My::Test21::ghost' } package My::Test22; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute', 'Role::Attribute2'; - }, '... composed attribute roles into class with attribute tiebreaker'; + } '... composed attribute roles into class with attribute tiebreaker'; has 'ghost' => (is => 'ro', default => 'My::Test22::ghost'); package My::Test23; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method', 'Role::Attribute'; - }, '... composed method and attribute role into class with method tiebreaker'; + } '... composed method and attribute role into class with method tiebreaker'; sub ghost { 'My::Test23::ghost' } package My::Test24; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Method', 'Role::Attribute'; - }, '... composed method and attribute role into class with attribute tiebreaker'; + } '... composed method and attribute role into class with attribute tiebreaker'; has 'ghost' => (is => 'ro', default => 'My::Test24::ghost'); package My::Test25; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute', 'Role::Method'; - }, '... composed attribute and method role into class with method tiebreaker'; + } '... composed attribute and method role into class with method tiebreaker'; sub ghost { 'My::Test25::ghost' } package My::Test26; use Moose; - ::ok ! ::exception { + ::lives_ok { with 'Role::Attribute', 'Role::Method'; - }, '... composed attribute and method role into class with attribute tiebreaker'; + } '... composed attribute and method role into class with attribute tiebreaker'; has 'ghost' => (is => 'ro', default => 'My::Test26::ghost'); }