diff options
Diffstat (limited to 'lib/Module/Pluggable/t/20dodgy_files.t')
-rw-r--r-- | lib/Module/Pluggable/t/20dodgy_files.t | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/Module/Pluggable/t/20dodgy_files.t b/lib/Module/Pluggable/t/20dodgy_files.t new file mode 100644 index 0000000000..a2fbad0ed1 --- /dev/null +++ b/lib/Module/Pluggable/t/20dodgy_files.t @@ -0,0 +1,67 @@ +#!perl -w + +use strict; +use FindBin; +use lib "$FindBin::Bin/lib"; +use Test::More tests => 5; + +my $foo; +ok($foo = OddTest->new()); + +my @plugins; +my @expected = ('OddTest::Plugin::#Dodgy', 'OddTest::Plugin::Foo'); +ok(@plugins = sort $foo->plugins); +is_deeply(\@plugins, \@expected, "is deeply"); + +my @odd_plugins; +my @odd_expected = qw(OddTest::Plugin::Foo); +ok(@odd_plugins = sort $foo->odd_plugins); +is_deeply(\@odd_plugins, \@odd_expected, "is deeply"); + + +package OddTest::Pluggable; + +use Data::Dumper; +use base qw(Module::Pluggable::Object); + + +sub find_files { + my $self = shift; + my @files = $self->SUPER::find_files(@_); + return grep { !/(^|\/)#/ } $self->SUPER::find_files(@_) ; +} + +package OddTest; + +use strict; +use Module::Pluggable; + + +sub new { + my $class = shift; + return bless {}, $class; + +} + +sub odd_plugins { + my $self = shift; + my %opts; + my ($pkg, $file) = caller; + # the default name for the method is 'plugins' + my $sub = $opts{'sub_name'} || 'plugins'; + # get our package + my ($package) = $opts{'package'} || "OddTest"; + $opts{filename} = $file; + $opts{package} = $package; + + + + my $op = OddTest::Pluggable->new( package => ref($self) ); + return $op->plugins(@_); + + +} + + +1; + |