| use strict; |
| use warnings; |
| use Test::More 0.88; |
| |
| use CPAN::Meta; |
| |
| delete $ENV{$_} for qw/PERL_JSON_BACKEND PERL_YAML_BACKEND/; # use defaults |
| |
| my %distmeta = ( |
| name => 'Module-Billed', |
| abstract => 'inscrutable', |
| version => '1', |
| author => 'Joe', |
| release_status => 'stable', |
| license => 'perl_5', |
| 'meta-spec' => { |
| version => '2', |
| url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec', |
| }, |
| dynamic_config => 1, |
| generated_by => 'Module::Build version 0.36', |
| ); |
| |
| { |
| my $meta = CPAN::Meta->new({ %distmeta }); |
| |
| ok( |
| $meta->should_index_package('Foo::Bar::Baz'), |
| 'we index any old package, without a no_index rule' |
| ); |
| |
| ok( |
| $meta->should_index_file('lib/Foo/Bar/Baz.pm'), |
| 'we index any old file, without a no_index rule' |
| ); |
| } |
| |
| { |
| my $meta = CPAN::Meta->new({ |
| %distmeta, |
| no_index => { |
| package => [ 'Foo::Bar' ], |
| namespace => [ 'Foo::Bar::Baz' ], |
| } |
| }); |
| |
| ok( |
| ! $meta->should_index_package('Foo::Bar'), |
| 'exclude a specific package' |
| ); |
| |
| ok( |
| $meta->should_index_package('Foo::Bar::Baz'), |
| 'namespace X does not exclude package X' |
| ); |
| |
| ok( |
| ! $meta->should_index_package('Foo::Bar::Baz::Quux'), |
| 'exclude something under a namespace' |
| ); |
| } |
| |
| { |
| my $meta = CPAN::Meta->new({ |
| %distmeta, |
| no_index => { |
| file => [ 'lib/Foo/Bar.pm' ], |
| directory => [ 'lib/Foo/Bar/Baz' ], |
| } |
| }); |
| |
| ok( |
| ! $meta->should_index_file('lib/Foo/Bar.pm'), |
| 'exclude a specific file' |
| ); |
| |
| ok( |
| $meta->should_index_file('lib/Foo/Bar/Baz.pm'), |
| 'do not exclude a file with a name like an excluded dir', |
| ); |
| |
| ok( |
| ! $meta->should_index_file('lib/Foo/Bar/Baz/Quux.pm'), |
| 'exclude something under a directory' |
| ); |
| } |
| |
| done_testing; |