Cleanup failing tests
[gitmo/Mouse.git] / Moose-t-failing / 060_compat / 004_entimwm
diff --git a/Moose-t-failing/060_compat/004_entimwm b/Moose-t-failing/060_compat/004_entimwm
new file mode 100644 (file)
index 0000000..c35bba6
--- /dev/null
@@ -0,0 +1,226 @@
+use strict;
+# This is automatically generated by author/import-moose-test.pl.
+# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
+use t::lib::MooseCompat;
+use warnings;
+use Test::More;
+$TODO = q{Mouse is not yet completed};
+use Mouse::Meta ();
+
+{
+    package My::Role;
+    use Mouse::Role;
+}
+
+{
+    package SomeClass;
+    use Mouse -traits => 'My::Role';
+}
+
+{
+    package SubClassUseBase;
+    use base qw/SomeClass/;
+}
+
+{
+    package SubSubClassUseBase;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends 'SubClassUseBase';
+    }
+    'Can extend non-Mouse class with parent class that is a Mouse class with a meta role';
+}
+
+{
+    ok( SubSubClassUseBase->meta->meta->can('does_role')
+        && SubSubClassUseBase->meta->meta->does_role('My::Role'),
+        '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.
+Mouse::Util::remove_metaclass_by_name('SubClassUseBase');
+
+{
+    package OtherClass;
+    use Mouse;
+}
+
+{
+    package OtherSubClassUseBase;
+    use base 'OtherClass';
+}
+
+{
+    package MultiParent1;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends qw( SubClassUseBase OtherSubClassUseBase );
+    }
+    'Can extend two non-Mouse classes with parents that are different Mouse metaclasses';
+}
+
+{
+    ok( MultiParent1->meta->meta->can('does_role')
+        && MultiParent1->meta->meta->does_role('My::Role'),
+        'MultiParent1 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiParent2;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends qw( OtherSubClassUseBase SubClassUseBase );
+    }
+    'Can extend two non-Mouse classes with parents that are different Mouse metaclasses (reverse order)';
+}
+
+{
+    ok( MultiParent2->meta->meta->can('does_role')
+        && MultiParent2->meta->meta->does_role('My::Role'),
+        'MultiParent2 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiParent3;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends qw( OtherClass SubClassUseBase );
+    }
+    'Can extend one Mouse class and one non-Mouse class';
+}
+
+{
+    ok( MultiParent3->meta->meta->can('does_role')
+        && MultiParent3->meta->meta->does_role('My::Role'),
+        'MultiParent3 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiParent4;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends qw( SubClassUseBase OtherClass );
+    }
+    'Can extend one non-Mouse class and one Mouse class';
+}
+
+{
+    ok( MultiParent4->meta->meta->can('does_role')
+        && MultiParent4->meta->meta->does_role('My::Role'),
+        'MultiParent4 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiChild1;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends 'MultiParent1';
+    }
+    'Can extend class that itself extends two non-Mouse classes with Mouse parents';
+}
+
+{
+    ok( MultiChild1->meta->meta->can('does_role')
+        && MultiChild1->meta->meta->does_role('My::Role'),
+        'MultiChild1 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiChild2;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends 'MultiParent2';
+    }
+    'Can extend class that itself extends two non-Mouse classes with Mouse parents (reverse order)';
+}
+
+{
+    ok( MultiChild2->meta->meta->can('does_role')
+        && MultiChild2->meta->meta->does_role('My::Role'),
+        'MultiChild2 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiChild3;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends 'MultiParent3';
+    }
+    'Can extend class that itself extends one Mouse and one non-Mouse parent';
+}
+
+{
+    ok( MultiChild3->meta->meta->can('does_role')
+        && MultiChild3->meta->meta->does_role('My::Role'),
+        'MultiChild3 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+{
+    package MultiChild4;
+    use Mouse;
+    use Test::More;
+$TODO = q{Mouse is not yet completed};
+    use Test::Exception;
+    lives_ok {
+        extends 'MultiParent4';
+    }
+    'Can extend class that itself extends one non-Mouse and one Mouse parent';
+}
+
+{
+    ok( MultiChild4->meta->meta->can('does_role')
+        && MultiChild4->meta->meta->does_role('My::Role'),
+        'MultiChild4 meta metaclass does the My::Role role' );
+}
+
+Mouse::Util::remove_metaclass_by_name($_)
+    for qw( SubClassUseBase OtherSubClassUseBase );
+
+done_testing;