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. |
ae15d9da |
11 | use Test::More; |
bca6bdad |
12 | use Moose::Util qw/find_meta/; |
3d041c32 |
13 | use FindBin; |
edb20ed3 |
14 | use lib "$FindBin::Bin/lib"; |
3d041c32 |
15 | |
6a8f85af |
16 | use Catalyst::Test qw/TestAppPluginWithConstructor/; |
38e43e65 |
17 | TestAppPluginWithConstructor->_make_immutable_if_needed; |
bca6bdad |
18 | ok find_meta('TestAppPluginWithConstructor')->is_immutable, |
19 | 'Am immutable after use'; |
20 | |
21 | ok request('/foo')->is_success, 'Can get /foo'; |
6a8f85af |
22 | is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.'; |
6e5505d4 |
23 | |
81ef9afd |
24 | my $warning; |
38e43e65 |
25 | eval "use TestAppBadlyImmutable"; |
26 | local $SIG{__WARN__} = sub { $warning .= $_[0] }; |
27 | |
28 | TestAppBadlyImmutable->_make_immutable_if_needed; |
29 | |
81ef9afd |
30 | like $warning, qr/\QYou made your application class (TestAppBadlyImmutable) immutable/, |
31 | 'An application class that is already immutable but does not inline the constructor warns at ->setup'; |
6e5505d4 |
32 | |
ae15d9da |
33 | done_testing; |
34 | |