use strict;
use warnings;
-use Test::More no_plan => 1;
+use Test::More tests => 4;
use Test::Exception;
-BEGIN {
- use_ok('Moose');
- use_ok('Moose::Util::TypeConstraints');
-}
+
{
package Foo;
# if no call to ANY Moose::Object->new was done before.
sub DEMOLISH {
my ( $self ) = @_;
+ # ... Moose (kinda) eats exceptions in DESTROY/DEMOLISH";
+ }
+}
+
+{
+ my $obj = eval { Foo->new; };
+ ::like( $@, qr/is required/, "... Foo plain" );
+ ::is( $obj, undef, "... the object is undef" );
+}
+
+{
+ package Bar;
+
+ sub new { die "Bar died"; }
+
+ sub DESTROY {
+ die "Vanilla Perl eats exceptions in DESTROY too";
}
}
-my $obj = eval { Foo->new; };
-::like( $@, qr/is required/, "... Foo plain" );
-::is( $obj, undef, "... the object is undef" );
+{
+ my $obj = eval { Bar->new; };
+ ::like( $@, qr/Bar died/, "... Bar plain" );
+ ::is( $obj, undef, "... the object is undef" );
+}
1;