File: plugin_new_method_backcompat.t

package info (click to toggle)
libcatalyst-perl 5.90132-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,016 kB
  • sloc: perl: 11,061; makefile: 7
file content (34 lines) | stat: -rw-r--r-- 1,284 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Test that plugins with their own new method don't break applications.

# 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
# 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;
use Moose::Util qw/find_meta/;
use FindBin;
use lib "$FindBin::Bin/lib";

use Catalyst::Test qw/TestAppPluginWithConstructor/;
TestAppPluginWithConstructor->_make_immutable_if_needed;
ok find_meta('TestAppPluginWithConstructor')->is_immutable,
    'Am immutable after use';

ok request('/foo')->is_success, 'Can get /foo';
is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';

my $warning;
eval "use TestAppBadlyImmutable";
local $SIG{__WARN__} = sub { $warning .= $_[0] };

TestAppBadlyImmutable->_make_immutable_if_needed;

like $warning, qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
    'An application class that is already immutable but does not inline the constructor warns at ->setup';

done_testing;