Detect redispatch exceptions by a class check, not by checking the exception message.
[catagits/Catalyst-Runtime.git] / t / unit_core_plugin.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 24;
7
8 use lib 't/lib';
9
10 {
11
12     package Faux::Plugin;
13
14     sub new { bless {}, shift }
15     my $count = 1;
16     sub count { $count++ }
17 }
18
19 my $warnings = 0;
20
21 use PluginTestApp;
22 my $logger = Class::MOP::Class->create_anon_class(
23     methods => {
24         warn => sub {
25             if ($_[1] =~ /plugin method is deprecated/) {
26                $warnings++;
27                 return;
28             }
29             die "Caught unexpected warning: " . $_[1];
30         },
31     },
32 )->new_object;
33 PluginTestApp->log($logger);
34
35 use Catalyst::Test qw/PluginTestApp/;
36
37 ok( get("/compile_time_plugins"), "get ok" );
38 is( $warnings, 0, 'no warnings' );
39 # FIXME - Run time plugin support is insane, and should be removed
40 #         for Catalyst 5.9
41 ok( get("/run_time_plugins"),     "get ok" );
42
43 is( $warnings, 1, '1 warning' );
44
45 use_ok 'TestApp';
46 my @expected = qw(
47   Catalyst::Plugin::Test::Errors
48   Catalyst::Plugin::Test::Headers
49   Catalyst::Plugin::Test::Inline
50   Catalyst::Plugin::Test::MangleDollarUnderScore
51   Catalyst::Plugin::Test::Plugin
52   TestApp::Plugin::AddDispatchTypes
53   TestApp::Plugin::FullyQualified
54 );
55
56 # Faux::Plugin is no longer reported
57 is_deeply [ TestApp->registered_plugins ], \@expected,
58   'registered_plugins() should only report the plugins for the current class';