|
Packit |
26bf30 |
#!perl
|
|
Packit |
26bf30 |
# $Id: /mirror/lab/perl/File-Find-Rule/t/File-Find-Rule.t 2100 2006-05-28T16:06:50.725367Z richardc $
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
use strict;
|
|
Packit |
26bf30 |
use warnings;
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
use Test::More tests => 42;
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
use lib './t/lib';
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
use File::Find::Object::TreeCreate;
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
use File::Path;
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $tree_creator = File::Find::Object::TreeCreate->new();
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
my $tree =
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "FFRt-to/",
|
|
Packit |
26bf30 |
'subs' =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "File-Find-Rule.t",
|
|
Packit |
26bf30 |
'contents' => $tree_creator->cat(
|
|
Packit |
26bf30 |
"./t/sample-data/to-copy-from/File-Find-Rule.t"
|
|
Packit |
26bf30 |
),
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "findorule.t",
|
|
Packit |
26bf30 |
'contents' => $tree_creator->cat(
|
|
Packit |
26bf30 |
"./t/sample-data/to-copy-from/findorule.t"
|
|
Packit |
26bf30 |
),
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "foobar",
|
|
Packit |
26bf30 |
'contents' => $tree_creator->cat(
|
|
Packit |
26bf30 |
"./t/sample-data/to-copy-from/foobar"
|
|
Packit |
26bf30 |
),
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "lib/",
|
|
Packit |
26bf30 |
'subs' =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
'name' => "File/",
|
|
Packit |
26bf30 |
'subs' =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
name => "Find/",
|
|
Packit |
26bf30 |
subs =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
name => "Object/",
|
|
Packit |
26bf30 |
subs =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
name => "Rule/",
|
|
Packit |
26bf30 |
subs =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
name => "Test/",
|
|
Packit |
26bf30 |
subs =>
|
|
Packit |
26bf30 |
[
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
name => "ATeam.pm",
|
|
Packit |
26bf30 |
content => $tree_creator->cat(
|
|
Packit |
26bf30 |
"./t/sample-data/to-copy-from/lib/File/Find/Object/Rule/Test/ATeam.pm"
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
),
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
},
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
};
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$tree_creator->create_tree("./t/sample-data/", $tree);
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $class;
|
|
Packit |
26bf30 |
my $copy_fn = $tree_creator->get_path(
|
|
Packit |
26bf30 |
"./t/sample-data/FFRt-to/"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $lib_fn = $tree_creator->get_path(
|
|
Packit |
26bf30 |
"./t/sample-data/FFRt-to/lib/"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $FFR_t = $tree_creator->get_path(
|
|
Packit |
26bf30 |
"./t/sample-data/FFRt-to/File-Find-Rule.t"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
my $findorule_t = $tree_creator->get_path(
|
|
Packit |
26bf30 |
"./t/sample-data/FFRt-to/findorule.t"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
my $foobar_fn = $tree_creator->get_path(
|
|
Packit |
26bf30 |
"./t/sample-data/FFRt-to/foobar"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my @tests = ($FFR_t, $findorule_t);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my @ateam_path =
|
|
Packit |
26bf30 |
map { $tree_creator->get_path("./t/sample-data/FFRt-to/$_") }
|
|
Packit |
26bf30 |
qw(
|
|
Packit |
26bf30 |
lib
|
|
Packit |
26bf30 |
lib/File
|
|
Packit |
26bf30 |
lib/File/Find
|
|
Packit |
26bf30 |
lib/File/Find/Object
|
|
Packit |
26bf30 |
lib/File/Find/Object/Rule
|
|
Packit |
26bf30 |
lib/File/Find/Object/Rule/Test
|
|
Packit |
26bf30 |
lib/File/Find/Object/Rule/Test/ATeam.pm
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $ATeam_pm_fn = $ateam_path[-1];
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
BEGIN {
|
|
Packit |
26bf30 |
$class = 'File::Find::Object::Rule';
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
use_ok($class)
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# on win32 systems the t/foobar file isn't 10 bytes it's 11, so the
|
|
Packit |
26bf30 |
# previous tests on the magic number 10 failed. rt.cpan.org #3838
|
|
Packit |
26bf30 |
my $foobar_size = -s $foobar_fn;
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $f = $class->new;
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
isa_ok($f, $class);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
sub _run_find
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
my $finder = shift;
|
|
Packit |
26bf30 |
return [ sort $finder->in($copy_fn) ];
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# name
|
|
Packit |
26bf30 |
$f = $class->name( qr/\.t$/ );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ @tests ],
|
|
Packit |
26bf30 |
"name( qr/\\.t\$/ )" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
# This test that starts returns the rule object.
|
|
Packit |
26bf30 |
# See: http://www.nntp.perl.org/group/perl.beginners/2012/04/msg120670.html
|
|
Packit |
26bf30 |
my $rule = $class->name( qr/\.t$/ )->start($copy_fn);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my @results;
|
|
Packit |
26bf30 |
while (my $item = $rule->match()) {
|
|
Packit |
26bf30 |
push @results, $item;
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply(
|
|
Packit |
26bf30 |
[ @results ],
|
|
Packit |
26bf30 |
[ @tests ],
|
|
Packit |
26bf30 |
"->start() Test."
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->name( 'foobar' );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"name( 'foobar' )" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->name( '*.t' );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
\@tests,
|
|
Packit |
26bf30 |
"name( '*.t' )" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->name( 'foobar', '*.t' );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn ],
|
|
Packit |
26bf30 |
"name( 'foobar', '*.t' )" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->name( [ 'foobar', '*.t' ] );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn ],
|
|
Packit |
26bf30 |
"name( [ 'foobar', '*.t' ] )" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# exec
|
|
Packit |
26bf30 |
$f = $class->exec(sub { length($_[0]) == 6 })->maxdepth(1);
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"exec (short)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->exec(sub { length($_[0]) > $foobar_size })->maxdepth(1);
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"exec (long)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, exec => sub { $_[2] eq $foobar_fn }, in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"exec (check arg 2)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# name and exec, chained
|
|
Packit |
26bf30 |
$f = $class
|
|
Packit |
26bf30 |
->exec(sub { length > $foobar_size })
|
|
Packit |
26bf30 |
->name( qr/\.t$/ );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"exec(match) and name(match)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class
|
|
Packit |
26bf30 |
->exec(sub { length > $foobar_size })
|
|
Packit |
26bf30 |
->name( qr/foo/ )
|
|
Packit |
26bf30 |
->maxdepth(1);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ ],
|
|
Packit |
26bf30 |
"exec(match) and name(fail)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# directory
|
|
Packit |
26bf30 |
$f = $class
|
|
Packit |
26bf30 |
->directory
|
|
Packit |
26bf30 |
->maxdepth(1)
|
|
Packit |
26bf30 |
->exec(sub { $_ !~ /(\.svn|CVS)/ }); # ignore .svn/CVS dirs
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $copy_fn,$lib_fn,],
|
|
Packit |
26bf30 |
"directory autostub" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# any/or
|
|
Packit |
26bf30 |
$f = $class->any( $class->exec( sub { length == 6 } ),
|
|
Packit |
26bf30 |
$class->name( qr/\.t$/ )
|
|
Packit |
26bf30 |
->exec( sub { length > $foobar_size } )
|
|
Packit |
26bf30 |
)->maxdepth(1);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t, $foobar_fn ],
|
|
Packit |
26bf30 |
"any" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
$f = $class->or( $class->exec( sub { length == 6 } ),
|
|
Packit |
26bf30 |
$class->name( qr/\.t$/ )
|
|
Packit |
26bf30 |
->exec( sub { length > $foobar_size } )
|
|
Packit |
26bf30 |
)->maxdepth(1);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t, $foobar_fn ],
|
|
Packit |
26bf30 |
"or" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# not/none
|
|
Packit |
26bf30 |
$f = $class
|
|
Packit |
26bf30 |
->file
|
|
Packit |
26bf30 |
->not( $class->name( qr/^[^.]{1,8}(\.[^.]{0,3})?$/ ) )
|
|
Packit |
26bf30 |
->maxdepth(1)
|
|
Packit |
26bf30 |
->exec(sub { length == 6 || length > 11 });
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"not" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# not as not_*
|
|
Packit |
26bf30 |
$f = $class
|
|
Packit |
26bf30 |
->file
|
|
Packit |
26bf30 |
->not_name( qr/^[^.]{1,8}(\.[^.]{0,3})?$/ )
|
|
Packit |
26bf30 |
->maxdepth(1)
|
|
Packit |
26bf30 |
->exec(sub { length == 6 || length > 11 });
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"not_*" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# prune/discard (.svn demo)
|
|
Packit |
26bf30 |
# this test may be a little meaningless for a cpan release, but it
|
|
Packit |
26bf30 |
# fires perfectly in my dev sandbox
|
|
Packit |
26bf30 |
$f = $class->or( $class->directory
|
|
Packit |
26bf30 |
->name(qr/(\.svn|CVS)/)
|
|
Packit |
26bf30 |
->prune
|
|
Packit |
26bf30 |
->discard,
|
|
Packit |
26bf30 |
$class->new->file );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn, $ATeam_pm_fn ],
|
|
Packit |
26bf30 |
"prune/discard .svn"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# procedural form of the CVS demo
|
|
Packit |
26bf30 |
$f = find(or => [ find( directory =>
|
|
Packit |
26bf30 |
name => qr/(\.svn|CVS)/,
|
|
Packit |
26bf30 |
prune =>
|
|
Packit |
26bf30 |
discard => ),
|
|
Packit |
26bf30 |
find( file => ) ]);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($f),
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn, $ATeam_pm_fn ],
|
|
Packit |
26bf30 |
"procedural prune/discard .svn"
|
|
Packit |
26bf30 |
);
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# size (stat test)
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => size => $foobar_size, in => $copy_fn, ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"size $foobar_size (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => size => "<= $foobar_size",
|
|
Packit |
26bf30 |
in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"size <= $foobar_size (stat)" );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => size => "<".($foobar_size + 1),
|
|
Packit |
26bf30 |
in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"size <($foobar_size + 1) (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => size => "<1K",
|
|
Packit |
26bf30 |
exec => sub { length == 6 },
|
|
Packit |
26bf30 |
in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"size <1K (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => size => ">3K", in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"size >3K (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# these next two should never fail. if they do then the testing fairy
|
|
Packit |
26bf30 |
# went mad
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( file => size => ">3M", in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ ],
|
|
Packit |
26bf30 |
"size >3M (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( file => size => ">3G", in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ ],
|
|
Packit |
26bf30 |
"size >3G (stat)" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
#min/maxdepth
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 0, in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $copy_fn ],
|
|
Packit |
26bf30 |
"maxdepth == 0" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
my $rule = find( or => [ find( name => qr/(\.svn|CVS)/,
|
|
Packit |
26bf30 |
discard =>),
|
|
Packit |
26bf30 |
find(),
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
maxdepth => 1 );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($rule),
|
|
Packit |
26bf30 |
[ $copy_fn, @tests, $foobar_fn, $lib_fn ],
|
|
Packit |
26bf30 |
"maxdepth == 1" );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($rule),
|
|
Packit |
26bf30 |
[ $copy_fn, @tests, $foobar_fn, $lib_fn ],
|
|
Packit |
26bf30 |
"maxdepth == 1, trailing slash on the path" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($rule),
|
|
Packit |
26bf30 |
[ $copy_fn, @tests, $foobar_fn, $lib_fn ],
|
|
Packit |
26bf30 |
"maxdepth == 1, ./t" );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( _run_find($rule),
|
|
Packit |
26bf30 |
[ $copy_fn, @tests, $foobar_fn, $lib_fn ],
|
|
Packit |
26bf30 |
"maxdepth == 1, ./././///./t" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ sort +find( or => [ find( name => qr/(\.svn|CVS)/,
|
|
Packit |
26bf30 |
prune =>
|
|
Packit |
26bf30 |
discard =>),
|
|
Packit |
26bf30 |
find( ),
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
mindepth => 1,
|
|
Packit |
26bf30 |
in => $copy_fn, ) ],
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn, @ateam_path ],
|
|
Packit |
26bf30 |
"mindepth == 1" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ sort +find( or => [ find( name => qr/(\.svn|CVS)/,
|
|
Packit |
26bf30 |
discard =>),
|
|
Packit |
26bf30 |
find(),
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
maxdepth => 1,
|
|
Packit |
26bf30 |
mindepth => 1,
|
|
Packit |
26bf30 |
in => $copy_fn, ) ],
|
|
Packit |
26bf30 |
[ @tests, $foobar_fn, $lib_fn ],
|
|
Packit |
26bf30 |
"maxdepth = 1 mindepth == 1" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# extras
|
|
Packit |
26bf30 |
my $ok = 0;
|
|
Packit |
26bf30 |
find( extras => { preprocess => sub { my ($self, $list) = @_; $ok = 1; return $list; } }, in => $copy_fn );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
ok( $ok, "extras preprocess fired" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
#iterator
|
|
Packit |
26bf30 |
$f = find( or => [ find( name => qr/(\.svn|CVS)/,
|
|
Packit |
26bf30 |
prune =>
|
|
Packit |
26bf30 |
discard =>),
|
|
Packit |
26bf30 |
find(),
|
|
Packit |
26bf30 |
],
|
|
Packit |
26bf30 |
start => $copy_fn );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
{
|
|
Packit |
26bf30 |
my @found;
|
|
Packit |
26bf30 |
while ($_ = $f->match) { push @found, $_ }
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ sort @found ], [ $copy_fn, @tests, $foobar_fn, @ateam_path ], "iterator" );
|
|
Packit |
26bf30 |
}
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# negating in the procedural interface
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( file => '!name' => qr/^[^.]{1,9}(\.[^.]{0,3})?$/,
|
|
Packit |
26bf30 |
maxdepth => 1,
|
|
Packit |
26bf30 |
in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $FFR_t ],
|
|
Packit |
26bf30 |
"negating in the procedural interface" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# grep
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( maxdepth => 1, file => grep => [ qr/bytes./, [ qr/.?/ ] ], in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ $foobar_fn ],
|
|
Packit |
26bf30 |
"grep" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# relative
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is_deeply( [ find( 'relative', maxdepth => 1, name => 'foobar', in => $copy_fn ) ],
|
|
Packit |
26bf30 |
[ 'foobar' ],
|
|
Packit |
26bf30 |
'relative' );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
# bootstrapping extensions via import
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
eval { $class->import(':Test::Elusive') };
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
like( $@, qr/^couldn't bootstrap File::Find::Object::Rule::Test::Elusive/,
|
|
Packit |
26bf30 |
"couldn't find the Elusive extension" );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
eval { $class->import(':Test::ATeam') };
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
is ($@, "", "if you can find them, maybe you can hire the A-Team" );
|
|
Packit |
26bf30 |
# TEST
|
|
Packit |
26bf30 |
can_ok( $class, 'ba' );
|
|
Packit |
26bf30 |
|
|
Packit |
26bf30 |
rmtree($tree_creator->get_path("./t/sample-data/FFRt-to"));
|