diff options
-rw-r--r-- | t/100-buggy-constructor-inlining.t | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/t/100-buggy-constructor-inlining.t b/t/100-buggy-constructor-inlining.t new file mode 100644 index 0000000..591fae0 --- /dev/null +++ b/t/100-buggy-constructor-inlining.t @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More tests => 6; + +my ($Foo, $Bar, $Baz) = (0, 0, 0); +{ + package Foo; + sub new { $Foo++; bless {}, shift } +} + +{ + package Bar; + use Moose; + use MooseX::NonMoose; + extends 'Foo'; + sub BUILD { $Bar++ } + __PACKAGE__->meta->make_immutable; +} + +{ + package Baz; + use Moose; + extends 'Bar'; + sub BUILD { $Baz++ } +} + +Baz->new; +{ local $TODO = "need to call custom constructor for other classes, not Moose::Object->new"; +is($Foo, 1, "Foo->new is called"); +} +{ local $TODO = "need to call non-Moose constructor, not superclass constructor"; +is($Bar, 0, "Bar->new is not called"); +} +is($Baz, 1, "Baz->new is called"); + +Baz->meta->make_immutable; +($Foo, $Bar, $Baz) = (0, 0, 0); + +Baz->new; +is($Foo, 1, "Foo->new is called"); +{ local $TODO = "need to call non-Moose constructor, not superclass constructor"; +is($Bar, 0, "Bar->new is not called"); +} +is($Baz, 1, "Baz->new is called"); |