summaryrefslogtreecommitdiff
path: root/t/exceptions/traits.t
diff options
context:
space:
mode:
Diffstat (limited to 't/exceptions/traits.t')
-rw-r--r--t/exceptions/traits.t34
1 files changed, 34 insertions, 0 deletions
diff --git a/t/exceptions/traits.t b/t/exceptions/traits.t
new file mode 100644
index 0000000..2d2fad0
--- /dev/null
+++ b/t/exceptions/traits.t
@@ -0,0 +1,34 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+# this test taken from MooseX::ABC t/immutable.t, where it broke with Moose 2.1207
+
+{
+ package ABC;
+ use Moose::Role;
+ around new => sub {
+ my $orig = shift;
+ my $class = shift;
+ my $meta = Class::MOP::class_of($class);
+ $meta->throw_error("$class is abstract, it cannot be instantiated");
+ $class->$orig(@_);
+ };
+}
+{
+ package MyApp::Base;
+ use Moose;
+ with 'ABC';
+ __PACKAGE__->meta->make_immutable(inline_constructor => 0);
+}
+
+
+like(
+ exception { MyApp::Base->new },
+ qr/MyApp::Base is abstract, it cannot be instantiated/,
+ 'instantiating abstract classes fails',
+);
+
+done_testing;