1 # Test that plugins with their own new method don't break applications.
3 # 5.70 creates all of the request/response structure itself in prepare,
4 # and as the new method in our plugin just blesses our args, that works nicely.
6 # In 5.80, we rely on the new method to appropriately initialise data
7 # structures, and therefore we need to inline a new method on MyApp to ensure
8 # that plugins don't get it wrong for us.
10 # Also tests method modifiers and etc in MyApp.pm still work as expected.
13 use Moose::Util qw/find_meta/;
15 use lib "$FindBin::Bin/lib";
17 use Catalyst::Test qw/TestAppPluginWithConstructor/;
18 TestAppPluginWithConstructor->_make_immutable_if_needed;
19 ok find_meta('TestAppPluginWithConstructor')->is_immutable,
20 'Am immutable after use';
22 ok request('/foo')->is_success, 'Can get /foo';
23 is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';
26 eval "use TestAppBadlyImmutable";
27 local $SIG{__WARN__} = sub { $warning .= $_[0] };
29 TestAppBadlyImmutable->_make_immutable_if_needed;
31 like $warning, qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
32 'An application class that is already immutable but does not inline the constructor warns at ->setup';