From fc9ee14de19a15fab5564086bdb5719ac824d68f Mon Sep 17 00:00:00 2001 From: Florian Ragwitz Date: Sun, 20 Sep 2009 11:36:07 +0200 Subject: [PATCH] Add testcase for late metaclass reinitialisation losing methods. --- t/late_reinitialize.t | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 t/late_reinitialize.t diff --git a/t/late_reinitialize.t b/t/late_reinitialize.t new file mode 100644 index 0000000..3a4f8fe --- /dev/null +++ b/t/late_reinitialize.t @@ -0,0 +1,35 @@ +use strict; +use warnings; +use Test::More; + +{ + package Foo; + use Moose::Role; + sub role_method {} +} + +{ + package BaseClass; + use Moose; + BEGIN { extends 'MooseX::MethodAttributes::Inheritable' } +} + +{ + package Bar; + use Moose; + BEGIN { ::ok(!Bar->meta->has_method('role_method')) } + BEGIN { ::ok(!Bar->can('role_method')) } + BEGIN { extends 'BaseClass'; with 'Foo' } + BEGIN { ::ok( Bar->meta->has_method('role_method')) } + BEGIN { ::ok( Bar->can('role_method')) } + use namespace::autoclean; + BEGIN { ::ok( Bar->meta->has_method('role_method')) } + BEGIN { ::ok( Bar->can('role_method')) } + sub foo : Bar {} + BEGIN { ::ok( Bar->meta->has_method('role_method')) } + BEGIN { ::ok( Bar->can('role_method')) } + ::ok( Bar->meta->has_method('role_method')); + ::ok( Bar->can('role_method')); +} + +done_testing;