=cut
{
- my %PLUGINS;
sub registered_plugins {
my $proto = shift;
- return sort keys %PLUGINS unless @_;
+ return sort keys %{$proto->_plugins} unless @_;
my $plugin = shift;
- return 1 if exists $PLUGINS{$plugin};
- return exists $PLUGINS{"Catalyst::Plugin::$plugin"};
+ return 1 if exists $proto->_plugins->{$plugin};
+ return exists $proto->_plugins->{"Catalyst::Plugin::$plugin"};
}
sub _register_plugin {
message => qq/Couldn't load ${type}plugin "$plugin", $error/ );
}
- $PLUGINS{$plugin} = 1;
+ $proto->_plugins->{$plugin} = 1;
unless ($instant) {
no strict 'refs';
unshift @{"$class\::ISA"}, $plugin;
sub setup_plugins {
my ( $class, $plugins ) = @_;
+ $class->_plugins( {} ) unless $class->_plugins;
$plugins ||= [];
for my $plugin ( reverse @$plugins ) {
use base qw/Class::Accessor::Fast Class::Data::Inheritable/;
use NEXT;
-__PACKAGE__->mk_classdata($_) for qw/_config/;
+__PACKAGE__->mk_classdata($_) for qw/_config _plugins/;
=head1 NAME
use strict;
use warnings;
-use Test::More tests => 20;
+use Test::More tests => 22;
use lib 't/lib';
ok( get("/compile_time_plugins"), "get ok" );
ok( get("/run_time_plugins"), "get ok" );
+
+use_ok 'TestApp';
+my @expected = qw(
+ Catalyst::Plugin::Test::Errors
+ Catalyst::Plugin::Test::Headers
+ Catalyst::Plugin::Test::Plugin
+ TestApp::Plugin::FullyQualified
+);
+
+# Faux::Plugin is no longer reported
+is_deeply [ TestApp->registered_plugins ], \@expected,
+ 'registered_plugins() should only report the plugins for the current class';