From: Andrew Rodland Date: Tue, 3 Apr 2012 18:28:41 +0000 (-0400) Subject: Skip tests requiring Class::Method::Modifiers if it's not installed X-Git-Tag: v1.000_900~17 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e32a2123d81309a189a0424ac6f2f6d197316bc5;p=gitmo%2FRole-Tiny.git Skip tests requiring Class::Method::Modifiers if it's not installed (and move them into their own file) --- diff --git a/t/modifiers.t b/t/modifiers.t new file mode 100644 index 0000000..a557d50 --- /dev/null +++ b/t/modifiers.t @@ -0,0 +1,45 @@ +use strict; +use warnings FATAL => 'all'; +use Test::More; +use Test::Fatal; + +BEGIN { + plan skip_all => "Class::Method::Modifiers not installed" + unless eval "use Class::Method::Modifiers; 1"; +} + +BEGIN { + package MyRole; + + use Role::Tiny; + + around foo => sub { my $orig = shift; join ' ', 'role foo', $orig->(@_) }; +} + +BEGIN { + package MyClass; + + sub foo { 'class foo' } +} + +BEGIN { + package BrokenRole; + use Role::Tiny; + + around 'broken modifier' => sub { my $orig = shift; $orig->(@_) }; +} + +sub try_apply_to { + my $to = shift; + exception { Role::Tiny->apply_role_to_package($to, 'MyRole') } +} + +is(try_apply_to('MyClass'), undef, 'role applies cleanly'); +is(MyClass->foo, 'role foo class foo', 'method modifier'); + +ok(exception { + my $new_class = Role::Tiny->create_class_with_roles('MyClass', 'BrokenRole'); +}, 'exception caught creating class with broken modifier in a role'); + +done_testing; + diff --git a/t/role-tiny.t b/t/role-tiny.t index db84ada..57914c0 100644 --- a/t/role-tiny.t +++ b/t/role-tiny.t @@ -10,8 +10,6 @@ BEGIN { requires qw(req1 req2); - around foo => sub { my $orig = shift; join ' ', 'role foo', $orig->(@_) }; - sub bar { 'role bar' } sub baz { 'role baz' } @@ -61,20 +59,12 @@ BEGIN { sub extra1 { 'role extra' } } -BEGIN { - package BrokenRole; - use Role::Tiny; - - around 'broken modifier' => sub { my $orig = shift; $orig->(@_) }; -} - sub try_apply_to { my $to = shift; exception { Role::Tiny->apply_role_to_package($to, 'MyRole') } } is(try_apply_to('MyClass'), undef, 'role applies cleanly'); -is(MyClass->foo, 'role foo class foo', 'method modifier'); is(MyClass->bar, 'role bar', 'method from role'); is(MyClass->baz, 'class baz', 'method from class'); ok(MyClass->does('MyRole'), 'class does role'); @@ -102,9 +92,5 @@ is exception { isa_ok($new_class, 'MyClass'); is($new_class->extra1, 'role extra', 'method from role'); -ok(exception { - $new_class = Role::Tiny->create_class_with_roles('MyClass', 'BrokenRole'); -}, 'exception caught creating class with broken modifier in a role'); - done_testing;