My previous role preservation fix made a todo test pass, so I moved the test and...
[gitmo/Moose.git] / t / 060_compat / 004_extends_nonmoose_that_isa_moose_with_metarole.t
index ba212df..8ec5dcb 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 use warnings;
-use Test::More tests => 18;
+use Test::More;
+use Class::MOP ();
 
 {
     package My::Role;
@@ -21,11 +22,10 @@ use Test::More tests => 18;
     package SubSubClassUseBase;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends 'SubClassUseBase';
-    }
-    'Can extend non-Moose class with parent class that is a Moose class with a meta role';
+    }, undef, 'Can extend non-Moose class with parent class that is a Moose class with a meta role' );
 }
 
 {
@@ -34,6 +34,11 @@ use Test::More tests => 18;
         'SubSubClassUseBase meta metaclass does the My::Role role' );
 }
 
+# Note, remove metaclasses of the 'use base' classes after each test,
+# so that they have to be re-initialized - otherwise latter tests
+# would not demonstrate the original issue.
+Class::MOP::remove_metaclass_by_name('SubClassUseBase');
+
 {
     package OtherClass;
     use Moose;
@@ -48,11 +53,10 @@ use Test::More tests => 18;
     package MultiParent1;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends qw( SubClassUseBase OtherSubClassUseBase );
-    }
-    'Can extend two non-Moose classes with parents that are different Moose metaclasses';
+    }, undef, 'Can extend two non-Moose classes with parents that are different Moose metaclasses' );
 }
 
 {
@@ -61,15 +65,17 @@ use Test::More tests => 18;
         'MultiParent1 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiParent2;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends qw( OtherSubClassUseBase SubClassUseBase );
-    }
-    'Can extend two non-Moose classes with parents that are different Moose metaclasses (reverse order)';
+    }, undef, 'Can extend two non-Moose classes with parents that are different Moose metaclasses (reverse order)' );
 }
 
 {
@@ -78,15 +84,17 @@ use Test::More tests => 18;
         'MultiParent2 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiParent3;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends qw( OtherClass SubClassUseBase );
-    }
-    'Can extend one Moose class and one non-Moose class';
+    }, undef, 'Can extend one Moose class and one non-Moose class' );
 }
 
 {
@@ -95,15 +103,17 @@ use Test::More tests => 18;
         'MultiParent3 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiParent4;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends qw( SubClassUseBase OtherClass );
-    }
-    'Can extend one non-Moose class and one Moose class';
+    }, undef, 'Can extend one non-Moose class and one Moose class' );
 }
 
 {
@@ -112,15 +122,17 @@ use Test::More tests => 18;
         'MultiParent4 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiChild1;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends 'MultiParent1';
-    }
-    'Can extend class that itself extends two non-Moose classes with Moose parents';
+    }, undef, 'Can extend class that itself extends two non-Moose classes with Moose parents' );
 }
 
 {
@@ -129,15 +141,17 @@ use Test::More tests => 18;
         'MultiChild1 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiChild2;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends 'MultiParent2';
-    }
-    'Can extend class that itself extends two non-Moose classes with Moose parents (reverse order)';
+    }, undef, 'Can extend class that itself extends two non-Moose classes with Moose parents (reverse order)' );
 }
 
 {
@@ -146,15 +160,17 @@ use Test::More tests => 18;
         'MultiChild2 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiChild3;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends 'MultiParent3';
-    }
-    'Can extend class that itself extends one Moose and one non-Moose parent';
+    }, undef, 'Can extend class that itself extends one Moose and one non-Moose parent' );
 }
 
 {
@@ -163,15 +179,17 @@ use Test::More tests => 18;
         'MultiChild3 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
 {
     package MultiChild4;
     use Moose;
     use Test::More;
-    use Test::Exception;
-    lives_ok {
+    use Test::Fatal;
+    is( exception {
         extends 'MultiParent4';
-    }
-    'Can extend class that itself extends one non-Moose and one Moose parent';
+    }, undef, 'Can extend class that itself extends one non-Moose and one Moose parent' );
 }
 
 {
@@ -180,3 +198,7 @@ use Test::More tests => 18;
         'MultiChild4 meta metaclass does the My::Role role' );
 }
 
+Class::MOP::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+done_testing;