Move the inline packages out into their own files so that the new test passes. All...
[catagits/Catalyst-Runtime.git] / t / plugin_new_method_backcompat.t
CommitLineData
3d041c32 1# Test that plugins with their own new method don't break applications.
2
6a8f85af 3# 5.70 creates all of the request/response structure itself in prepare,
3d041c32 4# and as the new method in our plugin just blesses our args, that works nicely.
5
6a8f85af 6# In 5.80, we rely on the new method to appropriately initialise data
3d041c32 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.
9
10# Also tests method modifiers and etc in MyApp.pm still work as expected.
6e5505d4 11use Test::More tests => 4;
12use Test::Exception;
3d041c32 13use FindBin;
edb20ed3 14use lib "$FindBin::Bin/lib";
3d041c32 15
6a8f85af 16use Catalyst::Test qw/TestAppPluginWithConstructor/;
17ok request('/foo')->is_success;
18is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';
6e5505d4 19
20throws_ok {
21 package TestAppBadlyImmutable;
6a8f85af 22 use Catalyst qw/+TestPluginWithConstructor/;
6e5505d4 23
24 TestAppBadlyImmutable->setup;
25
26 __PACKAGE__->meta->make_immutable( inline_constructor => 0 );
27}
28 qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
29 'An application class that is already immutable but does not inline the constructor dies at ->setup';
30