|
Packit |
0e0e0d |
#!/usr/bin/perl
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
use strict;
|
|
Packit |
0e0e0d |
use warnings;
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
use Test::More tests => 4;
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
BEGIN
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
use File::Spec;
|
|
Packit |
0e0e0d |
use lib File::Spec->catdir(File::Spec->curdir(), "t", "lib");
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
use File::Find::Object::TreeCreate;
|
|
Packit |
0e0e0d |
use File::Find::Object;
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
use File::Path;
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
my $tree =
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "prune--traverse-2/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "b.doc",
|
|
Packit |
0e0e0d |
'contents' => "This file was spotted in the wild.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "a/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "foo/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "please-prune-me/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "a-non-reachable-dir/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "dir1/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "dir2/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' =>
|
|
Packit |
0e0e0d |
"if-we-get-this-its-wrong.txt",
|
|
Packit |
0e0e0d |
'content' => "Hi ho!",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "h.rnd",
|
|
Packit |
0e0e0d |
'contents' => "This file is empty.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "lambda.calculus",
|
|
Packit |
0e0e0d |
'contents' => '\f \x (f (f x))'
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
};
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
my $t = File::Find::Object::TreeCreate->new();
|
|
Packit |
0e0e0d |
$t->create_tree("./t/sample-data/", $tree);
|
|
Packit |
0e0e0d |
my $ff =
|
|
Packit |
0e0e0d |
File::Find::Object->new(
|
|
Packit |
0e0e0d |
{},
|
|
Packit |
0e0e0d |
$t->get_path("./t/sample-data/prune--traverse-2")
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
my @results;
|
|
Packit |
0e0e0d |
for my $i (1 .. 7)
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
my $file = $ff->next();
|
|
Packit |
0e0e0d |
# We're doing that because get_current_node_files_list() used to
|
|
Packit |
0e0e0d |
# call ->_recurse() which caused some subtle bugs.
|
|
Packit |
0e0e0d |
my $files_in_node = $ff->get_current_node_files_list();
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
if ($file eq
|
|
Packit |
0e0e0d |
$t->get_path("t/sample-data/prune--traverse-2/foo/please-prune-me")
|
|
Packit |
0e0e0d |
)
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
$ff->set_traverse_to(
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
grep { $_ !~ /non-reachable/ }
|
|
Packit |
0e0e0d |
@{$ff->get_current_node_files_list()}
|
|
Packit |
0e0e0d |
]
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
# TEST
|
|
Packit |
0e0e0d |
is_deeply ($ff->get_traverse_to(), ["h.rnd", "lambda.calculus"],
|
|
Packit |
0e0e0d |
"Testing ->get_traverse_to()"
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
push @results, $file;
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
# TEST
|
|
Packit |
0e0e0d |
is_deeply(
|
|
Packit |
0e0e0d |
\@results,
|
|
Packit |
0e0e0d |
[(map { $t->get_path("t/sample-data/prune--traverse-2/$_") }
|
|
Packit |
0e0e0d |
("",
|
|
Packit |
0e0e0d |
qw(
|
|
Packit |
0e0e0d |
a
|
|
Packit |
0e0e0d |
b.doc
|
|
Packit |
0e0e0d |
foo
|
|
Packit |
0e0e0d |
foo/please-prune-me
|
|
Packit |
0e0e0d |
foo/please-prune-me/h.rnd
|
|
Packit |
0e0e0d |
foo/please-prune-me/lambda.calculus
|
|
Packit |
0e0e0d |
)))
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
"Checking for regular, lexicographically sorted order",
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
rmtree($t->get_path("./t/sample-data/prune--traverse-2"))
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
my $tree =
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "prune--traverse-2/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "b.doc",
|
|
Packit |
0e0e0d |
'contents' => "This file was spotted in the wild.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "a/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "foo/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "please-prune-me/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "a-non-reachable-dir/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "dir1/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "dir2/",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' =>
|
|
Packit |
0e0e0d |
"if-we-get-this-its-wrong.txt",
|
|
Packit |
0e0e0d |
'content' => "Hi ho!",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "h.rnd",
|
|
Packit |
0e0e0d |
'contents' => "This file is empty.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "lambda.calculus",
|
|
Packit |
0e0e0d |
'contents' => '\f \x (f (f x))'
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "zardoz/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "p.txt",
|
|
Packit |
0e0e0d |
'contents' => "Intentionally Left Boring.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "zardoz/",
|
|
Packit |
0e0e0d |
'subs' =>
|
|
Packit |
0e0e0d |
[
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
'name' => "p.txt",
|
|
Packit |
0e0e0d |
'contents' => "Intentionally Left Boring.",
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
},
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
};
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
my $t = File::Find::Object::TreeCreate->new();
|
|
Packit |
0e0e0d |
$t->create_tree("./t/sample-data/", $tree);
|
|
Packit |
0e0e0d |
my $ff =
|
|
Packit |
0e0e0d |
File::Find::Object->new(
|
|
Packit |
0e0e0d |
{},
|
|
Packit |
0e0e0d |
$t->get_path("./t/sample-data/prune--traverse-2")
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
my @results;
|
|
Packit |
0e0e0d |
for my $i (1 .. 9)
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
my $file = $ff->next();
|
|
Packit |
0e0e0d |
if ($file eq
|
|
Packit |
0e0e0d |
$t->get_path("t/sample-data/prune--traverse-2/foo/please-prune-me")
|
|
Packit |
0e0e0d |
)
|
|
Packit |
0e0e0d |
{
|
|
Packit |
0e0e0d |
$ff->prune();
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
push @results, $file;
|
|
Packit |
0e0e0d |
}
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
# TEST
|
|
Packit |
0e0e0d |
ok (!defined($ff->next()), "Testing that the scan has completed.");
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
# TEST
|
|
Packit |
0e0e0d |
is_deeply(
|
|
Packit |
0e0e0d |
\@results,
|
|
Packit |
0e0e0d |
[(map { $t->get_path("t/sample-data/prune--traverse-2/$_") }
|
|
Packit |
0e0e0d |
("",
|
|
Packit |
0e0e0d |
qw(
|
|
Packit |
0e0e0d |
a
|
|
Packit |
0e0e0d |
b.doc
|
|
Packit |
0e0e0d |
foo
|
|
Packit |
0e0e0d |
foo/please-prune-me
|
|
Packit |
0e0e0d |
foo/zardoz
|
|
Packit |
0e0e0d |
foo/zardoz/p.txt
|
|
Packit |
0e0e0d |
zardoz
|
|
Packit |
0e0e0d |
zardoz/p.txt
|
|
Packit |
0e0e0d |
)))
|
|
Packit |
0e0e0d |
],
|
|
Packit |
0e0e0d |
"Checking for regular, lexicographically sorted order",
|
|
Packit |
0e0e0d |
);
|
|
Packit |
0e0e0d |
|
|
Packit |
0e0e0d |
rmtree($t->get_path("./t/sample-data/prune--traverse-2"))
|
|
Packit |
0e0e0d |
}
|