use strict;
use warnings;
-use Test::More tests => 18;
+use Test::More;
+use Class::MOP ();
{
package My::Role;
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' );
}
{
'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;
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' );
}
{
'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)' );
}
{
'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' );
}
{
'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' );
}
{
'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' );
}
{
'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)' );
}
{
'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' );
}
{
'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' );
}
{
'MultiChild4 meta metaclass does the My::Role role' );
}
+Class::MOP::remove_metaclass_by_name($_)
+ for qw( SubClassUseBase OtherSubClassUseBase );
+
+done_testing;