Skip tests requiring Class::Method::Modifiers if it's not installed
Andrew Rodland [Tue, 3 Apr 2012 18:28:41 +0000 (14:28 -0400)]
(and move them into their own file)

t/modifiers.t [new file with mode: 0644]
t/role-tiny.t

diff --git a/t/modifiers.t b/t/modifiers.t
new file mode 100644 (file)
index 0000000..a557d50
--- /dev/null
@@ -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;
+
index db84ada..57914c0 100644 (file)
@@ -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;