# Test the FileFinder::ByName and FileFinder::Filter plugins use strict; use warnings; use Test::More 0.88; # done_testing use Test::DZil qw(Builder simple_ini is_filelist); use Dist::Zilla::File::InMemory; my $tzil; my @dist_files = map { Dist::Zilla::File::InMemory->new( name => $_, content => '') } qw( Changes LICENSE MANIFEST META.json META.yml Makefile.PL README Template_strict.patch bin/foo.pl bin/.hidden/foo.pl corpus/DZT/README corpus/DZT/lib/DZT/Sample.pm corpus/DZT/t/basic.t corpus/README corpus/archives/DZT-Sample-0.01.tar.gz corpus/archives/DZT-Sample-0.02.tar.gz corpus/archives/DZT-Sample-0.03.tar.gz corpus/gitvercheck.git lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/GitVersionCheckCJM.pm lib/Dist/Zilla/Plugin/Metadata.pm lib/Dist/Zilla/Plugin/ModuleBuild/Custom.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Plugin/VersionFromModule.pm lib/Dist/Zilla/Role/ModuleInfo.pm t/00-compile.t t/arcrel.t t/gitvercheck.t t/mb_custom.t t/metadata.t t/release-pod-coverage.t t/release-pod-syntax.t t/template.t t/vermod.t ); #--------------------------------------------------------------------- sub is_found { my ($plugin, $want, $comment) = @_; my $have = $tzil->plugin_named($plugin)->find_files; #printf " %s\n", $_->name for @$have; local $Test::Builder::Level = $Test::Builder::Level + 1; is_filelist($have, $want, $comment || $plugin); } #--------------------------------------------------------------------- sub make_tzil { $tzil = Builder->from_config( { dist_root => 'corpus/DZT' }, { add_files => { 'source/dist.ini' => simple_ini(@_), }, }, ); # Don't bother building anything, we just need a list of filenames: @{ $tzil->files } = @dist_files; } #--------------------------------------------------------------------- make_tzil([ 'FileFinder::ByName' => {qw(dir corpus skip archives)}], [ 'FileFinder::Filter' => {qw(finder FileFinder::ByName skip DZT)}]); is_found('FileFinder::ByName' => [qw( corpus/DZT/README corpus/DZT/lib/DZT/Sample.pm corpus/DZT/t/basic.t corpus/README corpus/gitvercheck.git )], 'dir corpus skip archives'); is_found('FileFinder::Filter' => [qw( corpus/README corpus/gitvercheck.git )], 'filter DZT'); #--------------------------------------------------------------------- make_tzil( [ 'FileFinder::ByName' => InBin => {qw(dir bin)}], [ 'FileFinder::ByName' => AllPerl => { file => [qw( *.pl *.pm)] }], [ 'FileFinder::ByName' => Plugins => {qw( dir lib match \.pm$ skip /Role/)}], [ 'FileFinder::ByName' => Synopsis => { file => '*.pl', dir => [qw(bin lib)], match => '\.pm$', skip => '(?i)version' }], [ 'FileFinder::Filter' => Everything => { finder => [qw(InBin AllPerl Plugins Synopsis)] }], [ 'FileFinder::Filter' => NoPluginM => { finder => 'AllPerl', skip => 'Plugin/M' }], ); is_found(InBin => [qw( bin/foo.pl bin/.hidden/foo.pl )]); is_found(AllPerl => [qw( bin/foo.pl bin/.hidden/foo.pl corpus/DZT/lib/DZT/Sample.pm lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/GitVersionCheckCJM.pm lib/Dist/Zilla/Plugin/Metadata.pm lib/Dist/Zilla/Plugin/ModuleBuild/Custom.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Plugin/VersionFromModule.pm lib/Dist/Zilla/Role/ModuleInfo.pm )]); is_found(Plugins => [qw( lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/GitVersionCheckCJM.pm lib/Dist/Zilla/Plugin/Metadata.pm lib/Dist/Zilla/Plugin/ModuleBuild/Custom.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Plugin/VersionFromModule.pm )]); is_found(Synopsis => [qw( bin/foo.pl bin/.hidden/foo.pl lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/Metadata.pm lib/Dist/Zilla/Plugin/ModuleBuild/Custom.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Role/ModuleInfo.pm )]); is_found(Everything => [qw( bin/foo.pl bin/.hidden/foo.pl corpus/DZT/lib/DZT/Sample.pm lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/GitVersionCheckCJM.pm lib/Dist/Zilla/Plugin/Metadata.pm lib/Dist/Zilla/Plugin/ModuleBuild/Custom.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Plugin/VersionFromModule.pm lib/Dist/Zilla/Role/ModuleInfo.pm )]); is_found(NoPluginM => [qw( bin/foo.pl bin/.hidden/foo.pl corpus/DZT/lib/DZT/Sample.pm lib/Dist/Zilla/Plugin/ArchiveRelease.pm lib/Dist/Zilla/Plugin/FindFiles.pm lib/Dist/Zilla/Plugin/GitVersionCheckCJM.pm lib/Dist/Zilla/Plugin/TemplateCJM.pm lib/Dist/Zilla/Plugin/VersionFromModule.pm lib/Dist/Zilla/Role/ModuleInfo.pm )]); #--------------------------------------------------------------------- make_tzil([ 'FileFinder::ByName' => 'Everything' ], [ 'FileFinder::ByName' => 'EverythingButPerl' => {skip => [qw( \.t$ (?i)\.p[lm]$ )]} ]); is_found(Everything => [ map { $_->name } @dist_files ]); is_found(EverythingButPerl => [qw( Changes LICENSE MANIFEST META.json META.yml README Template_strict.patch corpus/DZT/README corpus/README corpus/archives/DZT-Sample-0.01.tar.gz corpus/archives/DZT-Sample-0.02.tar.gz corpus/archives/DZT-Sample-0.03.tar.gz corpus/gitvercheck.git )]); done_testing;