Compare commits
5 Commits
version-0.
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9492cfde50 | ||
|
|
d0319851f3 | ||
|
|
6ca6dad45b | ||
|
|
395907e53b | ||
|
|
dcd092f5aa |
@@ -11,7 +11,7 @@
|
||||
package File::DirWalk;
|
||||
use base qw(Exporter);
|
||||
|
||||
our $VERSION = '0.5';
|
||||
our $VERSION = '0.6';
|
||||
our @EXPORT = qw(FAILED SUCCESS ABORTED PRUNE);
|
||||
|
||||
use warnings;
|
||||
@@ -128,7 +128,6 @@ sub entryList {
|
||||
|
||||
sub walk {
|
||||
my ($self,$path) = @_;
|
||||
|
||||
my $currentDir = dirname($path);
|
||||
my $currentBasename = basename($path);
|
||||
my $currentPath = $path;
|
||||
@@ -137,13 +136,13 @@ sub walk {
|
||||
$self->{currentBasename} = $currentBasename;
|
||||
$self->{currentPath} = $path;
|
||||
|
||||
if ((my $r = $self->{onBeginWalk}->($path)) != SUCCESS) {
|
||||
if ((my $r = $self->{onBeginWalk}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||
return $r;
|
||||
}
|
||||
|
||||
if (-l $path) {
|
||||
|
||||
if ((my $r = $self->{onLink}->($path)) != SUCCESS) {
|
||||
if ((my $r = $self->{onLink}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||
return $r;
|
||||
}
|
||||
|
||||
@@ -158,7 +157,7 @@ sub walk {
|
||||
$self->{count} = scalar @{$self->{entryList}};
|
||||
|
||||
++$self->{currentDepth};
|
||||
if ((my $r = $self->{onDirEnter}->($path)) != SUCCESS) {
|
||||
if ((my $r = $self->{onDirEnter}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||
return $r;
|
||||
}
|
||||
|
||||
@@ -183,12 +182,12 @@ sub walk {
|
||||
$self->{currentBasename} = $currentBasename;
|
||||
$self->{currentPath} = $path;
|
||||
|
||||
if ((my $r = $self->{onDirLeave}->($path)) != SUCCESS) {
|
||||
if ((my $r = $self->{onDirLeave}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||
return $r;
|
||||
}
|
||||
--$self->{currentDepth};
|
||||
} else {
|
||||
if ((my $r = $self->{onFile}->($path)) != SUCCESS) {
|
||||
if ((my $r = $self->{onFile}->($path,$currentDir,$currentBasename)) != SUCCESS) {
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
|
||||
7
t/1.t
7
t/1.t
@@ -1,4 +1,4 @@
|
||||
use Test::More tests => 29;
|
||||
use Test::More tests => 33;
|
||||
use Test::Exception;
|
||||
|
||||
BEGIN { use_ok( 'File::DirWalk' ); }
|
||||
@@ -7,6 +7,11 @@ require_ok( 'File::DirWalk' );
|
||||
$dw = new File::DirWalk();
|
||||
is(ref($dw), 'File::DirWalk' );
|
||||
|
||||
is(SUCCESS, 1);
|
||||
is(FAILED, 0);
|
||||
is(ABORTED, -1);
|
||||
is(PRUNE, -10);
|
||||
|
||||
is ($dw->getDepth(), 0);
|
||||
dies_ok { $dw->setDepth(-1) };
|
||||
is ($dw->getDepth(), 0);
|
||||
|
||||
9
t/2.t
9
t/2.t
@@ -14,11 +14,16 @@ foreach my $f qw(1.t 2.t 3.t 4.t) {
|
||||
$dw->setDepth(1);
|
||||
|
||||
$dw->onFile(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-f $path);
|
||||
ok(-d $dir);
|
||||
is($dir, "t");
|
||||
is($dw->currentDir(), "t");
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
|
||||
if ($dw->currentBasename() eq $f) {
|
||||
if (($dw->currentBasename() eq $f) and ($basename eq $f)) {
|
||||
return 42;
|
||||
}
|
||||
|
||||
|
||||
53
t/4.t
53
t/4.t
@@ -18,10 +18,13 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
||||
|
||||
$dw = new File::DirWalk();
|
||||
$dw->onBeginWalk(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-d $dir);
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
|
||||
if ($dw->currentBasename() eq $subdir) {
|
||||
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||
return 42;
|
||||
}
|
||||
|
||||
@@ -31,13 +34,24 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
||||
|
||||
$dw = new File::DirWalk();
|
||||
$dw->onDirEnter(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-d $path);
|
||||
ok(-d $dir);
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
|
||||
if ($dw->currentBasename() eq $subdir) {
|
||||
is( $dw->count(), 10 );
|
||||
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||
is( $dw->currentDepth(), 2 );
|
||||
is( @{$dw->entryList()}, 10);
|
||||
is( $dw->count(), 10 );
|
||||
|
||||
foreach my $expected (qw(file0 file1 file2 file3 file4 file5 file6 file7 file8 file9)) {
|
||||
my @foo = grep(/$expected/, @{$dw->entryList()});
|
||||
is(@foo, 1);
|
||||
is($foo[0], $expected);
|
||||
}
|
||||
|
||||
return 42;
|
||||
}
|
||||
|
||||
@@ -47,13 +61,24 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
||||
|
||||
$dw = new File::DirWalk();
|
||||
$dw->onDirLeave(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-d $path);
|
||||
ok(-d $dir);
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
|
||||
if ($dw->currentBasename() eq $subdir) {
|
||||
is( $dw->count(), 10 );
|
||||
if (($dw->currentBasename() eq $subdir) and ($basename eq $subdir)) {
|
||||
is( $dw->currentDepth(), 2 );
|
||||
is( @{$dw->entryList()}, 10);
|
||||
is( $dw->count(), 10 );
|
||||
|
||||
foreach my $expected (qw(file0 file1 file2 file3 file4 file5 file6 file7 file8 file9)) {
|
||||
my @foo = grep(/$expected/, @{$dw->entryList()});
|
||||
is(@foo, 1);
|
||||
is($foo[0], $expected);
|
||||
}
|
||||
|
||||
return 42;
|
||||
}
|
||||
|
||||
@@ -64,9 +89,14 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
||||
|
||||
$dw = new File::DirWalk();
|
||||
$dw->onFile(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-f $path);
|
||||
ok(-d $dir);
|
||||
is($dir, "t/tree/$subdir");
|
||||
is($dw->currentDir(), "t/tree/$subdir");
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
return SUCCESS;
|
||||
});
|
||||
|
||||
@@ -77,9 +107,12 @@ foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) {
|
||||
$files = 0;
|
||||
$dw = new File::DirWalk();
|
||||
$dw->onFile(sub {
|
||||
my ($path) = @_;
|
||||
my ($path,$dir,$basename) = @_;
|
||||
ok(-e $path);
|
||||
ok(-f $path);
|
||||
ok(-d $dir);
|
||||
is($dw->currentDir(), $dir);
|
||||
is($dw->currentBasename(), $basename);
|
||||
++$files;
|
||||
return SUCCESS;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user