Commit | Line | Data |
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 |
11 | use Test::More tests => 4; |
12 | use Test::Exception; |
3d041c32 |
13 | use FindBin; |
edb20ed3 |
14 | use lib "$FindBin::Bin/lib"; |
3d041c32 |
15 | |
6a8f85af |
16 | use Catalyst::Test qw/TestAppPluginWithConstructor/; |
17 | ok request('/foo')->is_success; |
18 | is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.'; |
6e5505d4 |
19 | |
20 | throws_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 | |