1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
#!perl
use strict;
use warnings;
use lib './t/lib';
use Test::More tests => 5;
use File::Spec;
use File::Path;
use File::Find::Object::TreeCreate;
my $tree_creator = File::Find::Object::TreeCreate->new();
{
my $tree =
{
'name' => "copy-to/",
'subs' =>
[
{
'name' => "File-Find-Rule.t",
'contents' => $tree_creator->cat(
"./t/sample-data/to-copy-from/File-Find-Rule.t"
),
},
{
'name' => "findorule.t",
'contents' => $tree_creator->cat(
"./t/sample-data/to-copy-from/findorule.t"
),
},
{
'name' => "foobar",
'contents' => $tree_creator->cat(
"./t/sample-data/to-copy-from/foobar"
),
},
{
'name' => "lib/",
'subs' =>
[
{
'name' => "File/",
'subs' =>
[
{
name => "Find/",
subs =>
[
{
name => "Object/",
subs =>
[
{
name => "Rule/",
subs =>
[
{
name => "Test/",
subs =>
[
{
name => "ATeam.pm",
content => $tree_creator->cat(
"./t/sample-data/to-copy-from/lib/File/Find/Object/Rule/Test/ATeam.pm"
),
}
],
},
],
}
],
},
],
},
],
},
],
},
],
};
$tree_creator->create_tree("./t/sample-data/", $tree);
}
# extra tests for findorule. these are more for testing the parsing code.
sub run ($) {
my $expr = shift;
my $script = File::Spec->catfile(
File::Spec->curdir(), "scripts", "findorule"
);
[ sort split /\n/, `$^X -Mblib $script $expr` ];
}
my $copy_fn = $tree_creator->get_path(
"./t/sample-data/copy-to/"
);
my $FFR_t = $tree_creator->get_path(
"./t/sample-data/copy-to/File-Find-Rule.t"
);
my $findorule_t = $tree_creator->get_path(
"./t/sample-data/copy-to/findorule.t"
);
my $foobar_fn = $tree_creator->get_path(
"./t/sample-data/copy-to/foobar"
);
# TEST
is_deeply(run $copy_fn . ' -file -name foobar', [ $foobar_fn ],
'-file -name foobar');
# TEST
is_deeply(run $copy_fn . ' -maxdepth 0 -directory',
[ $copy_fn ], 'last clause has no args');
{
local $TODO = "Win32 cmd.exe hurts my brane"
if ($^O =~ m/Win32/ || $^O eq 'dos');
# TEST
is_deeply(run $copy_fn . ' -file -name \( foobar \*.t \)',
[ $FFR_t, $findorule_t, $foobar_fn ],
'grouping ()');
# TEST
is_deeply(run $copy_fn . ' -name \( -foo foobar \)',
[ $foobar_fn ], 'grouping ( -literal )');
}
# Remming out due to capturing STDERR using unixisms. In the future, we
# may implement this using Test::Trap.
# is_deeply(run $copy_fn . ' -file -name foobar baz',
# [ "unknown option 'baz'" ], 'no implicit grouping');
# TEST
is_deeply(run $copy_fn . ' -maxdepth 0 -name -file',
[], 'terminate at next -');
rmtree($copy_fn);
|