Rename the actions attribute in Catalyt::Controller to _controller_actions to avoid...
[catagits/Catalyst-Runtime.git] / t / plugin_new_method_backcompat.t
index 7aaef8b..d7778b8 100644 (file)
@@ -1,17 +1,30 @@
 # Test that plugins with their own new method don't break applications.
 
-# 5.70 creates all of the request/response structure itself in prepare, 
+# 5.70 creates all of the request/response structure itself in prepare,
 # and as the new method in our plugin just blesses our args, that works nicely.
 
-# In 5.80, we rely on the new method to appropriately initialise data 
+# In 5.80, we rely on the new method to appropriately initialise data
 # structures, and therefore we need to inline a new method on MyApp to ensure
 # that plugins don't get it wrong for us.
 
 # Also tests method modifiers and etc in MyApp.pm still work as expected.
-
+use Test::More tests => 4;
+use Test::Exception;
 use FindBin;
-use lib "$FindBin::Bin/lib";use Test::More tests => 3;
+use lib "$FindBin::Bin/lib";
+
+use Catalyst::Test qw/TestAppPluginWithConstructor/;
+ok request('/foo')->is_success;
+is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';
+
+throws_ok {
+    package TestAppBadlyImmutable;
+    use Catalyst qw/+TestPluginWithConstructor/;
+
+    TestAppBadlyImmutable->setup;
+
+    __PACKAGE__->meta->make_immutable( inline_constructor => 0 );
+}
+    qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
+    'An application class that is already immutable but does not inline the constructor dies at ->setup';
 
-use Catalyst::Test qw/TestAppPluginWithNewMethod/; # 1 test for adding a modifer not throwing.
-ok request('/foo')->is_success; 
-is $TestAppPluginWithNewMethod::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';