From ada7ad784b73cc5da7dbdead5616c13227f754ab Mon Sep 17 00:00:00 2001 From: Jens Luedicke Date: Sat, 9 Mar 2013 13:59:54 +0100 Subject: [PATCH] M: Improved and extended unit tests. --- lib/File/DirWalk.pm | 12 +++++-- t/1.t | 67 ++-------------------------------- t/2.t | 29 +++++++++++++++ t/3.t | 55 ++++++++++++++++++++++++++++ t/4.t | 88 +++++++++++++++++++++++++++++++++++++++++++++ t/tree/dir1/file0 | 0 t/tree/dir1/file1 | 0 t/tree/dir1/file2 | 0 t/tree/dir1/file3 | 0 t/tree/dir1/file4 | 0 t/tree/dir1/file5 | 0 t/tree/dir1/file6 | 0 t/tree/dir1/file7 | 0 t/tree/dir1/file8 | 0 t/tree/dir1/file9 | 0 t/tree/dir2/file0 | 0 t/tree/dir2/file1 | 0 t/tree/dir2/file2 | 0 t/tree/dir2/file3 | 0 t/tree/dir2/file4 | 0 t/tree/dir2/file5 | 0 t/tree/dir2/file6 | 0 t/tree/dir2/file7 | 0 t/tree/dir2/file8 | 0 t/tree/dir2/file9 | 0 t/tree/dir3/file0 | 0 t/tree/dir3/file1 | 0 t/tree/dir3/file2 | 0 t/tree/dir3/file3 | 0 t/tree/dir3/file4 | 0 t/tree/dir3/file5 | 0 t/tree/dir3/file6 | 0 t/tree/dir3/file7 | 0 t/tree/dir3/file8 | 0 t/tree/dir3/file9 | 0 t/tree/dir4/file0 | 0 t/tree/dir4/file1 | 0 t/tree/dir4/file2 | 0 t/tree/dir4/file3 | 0 t/tree/dir4/file4 | 0 t/tree/dir4/file5 | 0 t/tree/dir4/file6 | 0 t/tree/dir4/file7 | 0 t/tree/dir4/file8 | 0 t/tree/dir4/file9 | 0 t/tree/dir5/file0 | 0 t/tree/dir5/file1 | 0 t/tree/dir5/file2 | 0 t/tree/dir5/file3 | 0 t/tree/dir5/file4 | 0 t/tree/dir5/file5 | 0 t/tree/dir5/file6 | 0 t/tree/dir5/file7 | 0 t/tree/dir5/file8 | 0 t/tree/dir5/file9 | 0 55 files changed, 184 insertions(+), 67 deletions(-) create mode 100644 t/2.t create mode 100644 t/3.t create mode 100644 t/4.t create mode 100644 t/tree/dir1/file0 create mode 100644 t/tree/dir1/file1 create mode 100644 t/tree/dir1/file2 create mode 100644 t/tree/dir1/file3 create mode 100644 t/tree/dir1/file4 create mode 100644 t/tree/dir1/file5 create mode 100644 t/tree/dir1/file6 create mode 100644 t/tree/dir1/file7 create mode 100644 t/tree/dir1/file8 create mode 100644 t/tree/dir1/file9 create mode 100644 t/tree/dir2/file0 create mode 100644 t/tree/dir2/file1 create mode 100644 t/tree/dir2/file2 create mode 100644 t/tree/dir2/file3 create mode 100644 t/tree/dir2/file4 create mode 100644 t/tree/dir2/file5 create mode 100644 t/tree/dir2/file6 create mode 100644 t/tree/dir2/file7 create mode 100644 t/tree/dir2/file8 create mode 100644 t/tree/dir2/file9 create mode 100644 t/tree/dir3/file0 create mode 100644 t/tree/dir3/file1 create mode 100644 t/tree/dir3/file2 create mode 100644 t/tree/dir3/file3 create mode 100644 t/tree/dir3/file4 create mode 100644 t/tree/dir3/file5 create mode 100644 t/tree/dir3/file6 create mode 100644 t/tree/dir3/file7 create mode 100644 t/tree/dir3/file8 create mode 100644 t/tree/dir3/file9 create mode 100644 t/tree/dir4/file0 create mode 100644 t/tree/dir4/file1 create mode 100644 t/tree/dir4/file2 create mode 100644 t/tree/dir4/file3 create mode 100644 t/tree/dir4/file4 create mode 100644 t/tree/dir4/file5 create mode 100644 t/tree/dir4/file6 create mode 100644 t/tree/dir4/file7 create mode 100644 t/tree/dir4/file8 create mode 100644 t/tree/dir4/file9 create mode 100644 t/tree/dir5/file0 create mode 100644 t/tree/dir5/file1 create mode 100644 t/tree/dir5/file2 create mode 100644 t/tree/dir5/file3 create mode 100644 t/tree/dir5/file4 create mode 100644 t/tree/dir5/file5 create mode 100644 t/tree/dir5/file6 create mode 100644 t/tree/dir5/file7 create mode 100644 t/tree/dir5/file8 create mode 100644 t/tree/dir5/file9 diff --git a/lib/File/DirWalk.pm b/lib/File/DirWalk.pm index d8b99ca..90d7806 100644 --- a/lib/File/DirWalk.pm +++ b/lib/File/DirWalk.pm @@ -131,8 +131,12 @@ sub entryList { sub walk { my ($self,$path) = @_; - $self->{currentDir} = dirname($path); - $self->{currentBasename} = basename($path); + my $currentDir = dirname($path); + my $currentBasename = basename($path); + my $currentPath = $path; + + $self->{currentDir} = $currentDir; + $self->{currentBasename} = $currentBasename; $self->{currentPath} = $path; if ((my $r = $self->{onBeginWalk}->($path)) != SUCCESS) { @@ -179,6 +183,10 @@ sub walk { closedir $dirh; + $self->{currentDir} = $currentDir; + $self->{currentBasename} = $currentBasename; + $self->{currentPath} = $path; + if ((my $r = $self->{onDirLeave}->($path)) != SUCCESS) { return $r; } diff --git a/t/1.t b/t/1.t index 0029ee9..17b3b89 100644 --- a/t/1.t +++ b/t/1.t @@ -1,11 +1,8 @@ use Test::More qw(no_plan); use Test::Exception; -use File::Basename; -use File::DirWalk; - -my $perl_path = dirname($^X); -my $perl_interpreter = basename($^X); +BEGIN { use_ok( 'File::DirWalk' ); } +require_ok( 'File::DirWalk' ); $dw = new File::DirWalk(); @@ -28,64 +25,4 @@ dies_ok {$dw->setHandler(onLink => 0)}; dies_ok {$dw->setHandler(onFile => 0)}; dies_ok {$dw->setHandler(onDirEnter => 0)}; dies_ok {$dw->setHandler(onDirLeave => 0)}; - dies_ok {$dw->setHandler(Foo => sub {})}; - -$dw->onFile(sub { - my ($path) = @_; - - if (basename($path) eq "1.t") { - return ABORTED; - } - - return SUCCESS; -}); - -ok( $dw->walk($0) == ABORTED ); - -$dw->onDirEnter(sub { - my ($path) = @_; - - if ($path eq $perl_path) { - return FAILED; - } - - return SUCCESS; -}); - -ok( $dw->walk($perl_path) == FAILED ); - -$dw->onBeginWalk(sub { - my ($path) = @_; - if (dirname($path) eq $dw->currentDir) { - return ABORTED; - } - - return SUCCESS; -}); - -ok( $dw->walk($perl_path) == ABORTED ); - -$dw->onBeginWalk(sub { - my ($path) = @_; - if ($path eq $dw->currentPath) { - return ABORTED; - } - - return SUCCESS; -}); - -ok( $dw->walk($perl_path) == ABORTED ); - -$dw = new File::DirWalk(); -$dw->onFile(sub { - my ($path) = @_; - - if ($dw->currentBasename() eq $perl_interpreter) { - return 42; - } - - return SUCCESS; -}); - -ok( $dw->walk($perl_path) == 42 ); diff --git a/t/2.t b/t/2.t new file mode 100644 index 0000000..a55432e --- /dev/null +++ b/t/2.t @@ -0,0 +1,29 @@ +use Test::More qw(no_plan); +use Test::Exception; + +use File::Basename; + +BEGIN { use_ok( 'File::DirWalk' ); } +require_ok( 'File::DirWalk' ); + +ok(-e "t/"); +ok(-d "t/"); + +foreach my $f qw(1.t 2.t 3.t 4.t) { + $dw = new File::DirWalk(); + $dw->setDepth(1); + + $dw->onFile(sub { + my ($path) = @_; + ok(-e $path); + ok(-f $path); + + if ($dw->currentBasename() eq $f) { + return 42; + } + + return SUCCESS; + }); + + is($dw->walk("t/"), 42); +} diff --git a/t/3.t b/t/3.t new file mode 100644 index 0000000..a677c59 --- /dev/null +++ b/t/3.t @@ -0,0 +1,55 @@ +use Test::More qw(no_plan); +use Test::Exception; + +use File::Basename; + +BEGIN { use_ok( 'File::DirWalk' ); } +require_ok( 'File::DirWalk' ); + +my $perl_path = dirname($^X); +my $perl_interpreter = basename($^X); + +$dw = new File::DirWalk(); +$dw->onDirEnter(sub { + my ($path) = @_; + ok(-e $path); + ok(-d $path); + + if ($dw->currentPath() eq $perl_path) { + return 42; + } + + return SUCCESS; +}); + +is( $dw->walk($perl_path), 42 ); + +$dw = new File::DirWalk(); +$dw->onDirEnter(sub { + my ($path) = @_; + ok(-e $path); + ok(-d $path); + + if ($dw->currentDir() eq $perl_path) { + return 42; + } + + return SUCCESS; +}); + +is( $dw->walk($perl_path), 42 ); + +$dw = new File::DirWalk(); +$dw->onFile(sub { + my ($path) = @_; + ok(-e $path); + ok(-f $path); + + if ($dw->currentBasename() eq $perl_interpreter) { + return 42; + } + + return SUCCESS; +}); + +is( $dw->walk($perl_path), 42 ); diff --git a/t/4.t b/t/4.t new file mode 100644 index 0000000..a2cee8a --- /dev/null +++ b/t/4.t @@ -0,0 +1,88 @@ +use Test::More qw(no_plan); +use Test::Exception; + +use File::Basename; +use File::Spec::Functions; + +BEGIN { use_ok( 'File::DirWalk' ); } +require_ok( 'File::DirWalk' ); + +$dw = new File::DirWalk(); + +ok( -e "t/tree" ); +ok( -d "t/tree" ); + +foreach my $subdir (qw(dir1 dir2 dir3 dir4 dir5)) { + ok( -e "t/tree/$subdir" ); + ok( -d "t/tree/$subdir" ); + + $dw = new File::DirWalk(); + $dw->onBeginWalk(sub { + my ($path) = @_; + ok(-e $path); + + if ($dw->currentBasename() eq $subdir) { + return 42; + } + + return SUCCESS; + }); + is( $dw->walk("t/tree"), 42 ); + + $dw = new File::DirWalk(); + $dw->onDirEnter(sub { + my ($path) = @_; + ok(-e $path); + ok(-d $path); + + if ($dw->currentBasename() eq $subdir) { + is( $dw->count(), 10 ); + is( $dw->currentDepth(), 2 ); + return 42; + } + + return SUCCESS; + }); + is( $dw->walk("t/tree"), 42 ); + + $dw = new File::DirWalk(); + $dw->onDirLeave(sub { + my ($path) = @_; + ok(-e $path); + ok(-d $path); + + if ($dw->currentBasename() eq $subdir) { + is( $dw->count(), 10 ); + is( $dw->currentDepth(), 2 ); + return 42; + } + + return SUCCESS; + }); + + is( $dw->walk("t/tree"), 42 ); + + $dw = new File::DirWalk(); + $dw->onFile(sub { + my ($path) = @_; + ok(-e $path); + ok(-f $path); + return SUCCESS; + }); + + is( $dw->walk("t/tree/$subdir"), SUCCESS ); + is( $dw->count(), 10 ); +} + +$files = 0; +$dw = new File::DirWalk(); +$dw->onFile(sub { + my ($path) = @_; + ok(-e $path); + ok(-f $path); + ++$files; + return SUCCESS; +}); + +is( $dw->walk("t/tree"), SUCCESS ); +is( $files, 50 ); diff --git a/t/tree/dir1/file0 b/t/tree/dir1/file0 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file1 b/t/tree/dir1/file1 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file2 b/t/tree/dir1/file2 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file3 b/t/tree/dir1/file3 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file4 b/t/tree/dir1/file4 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file5 b/t/tree/dir1/file5 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file6 b/t/tree/dir1/file6 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file7 b/t/tree/dir1/file7 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file8 b/t/tree/dir1/file8 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir1/file9 b/t/tree/dir1/file9 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file0 b/t/tree/dir2/file0 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file1 b/t/tree/dir2/file1 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file2 b/t/tree/dir2/file2 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file3 b/t/tree/dir2/file3 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file4 b/t/tree/dir2/file4 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file5 b/t/tree/dir2/file5 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file6 b/t/tree/dir2/file6 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file7 b/t/tree/dir2/file7 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file8 b/t/tree/dir2/file8 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir2/file9 b/t/tree/dir2/file9 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file0 b/t/tree/dir3/file0 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file1 b/t/tree/dir3/file1 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file2 b/t/tree/dir3/file2 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file3 b/t/tree/dir3/file3 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file4 b/t/tree/dir3/file4 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file5 b/t/tree/dir3/file5 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file6 b/t/tree/dir3/file6 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file7 b/t/tree/dir3/file7 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file8 b/t/tree/dir3/file8 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir3/file9 b/t/tree/dir3/file9 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file0 b/t/tree/dir4/file0 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file1 b/t/tree/dir4/file1 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file2 b/t/tree/dir4/file2 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file3 b/t/tree/dir4/file3 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file4 b/t/tree/dir4/file4 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file5 b/t/tree/dir4/file5 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file6 b/t/tree/dir4/file6 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file7 b/t/tree/dir4/file7 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file8 b/t/tree/dir4/file8 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir4/file9 b/t/tree/dir4/file9 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file0 b/t/tree/dir5/file0 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file1 b/t/tree/dir5/file1 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file2 b/t/tree/dir5/file2 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file3 b/t/tree/dir5/file3 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file4 b/t/tree/dir5/file4 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file5 b/t/tree/dir5/file5 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file6 b/t/tree/dir5/file6 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file7 b/t/tree/dir5/file7 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file8 b/t/tree/dir5/file8 new file mode 100644 index 0000000..e69de29 diff --git a/t/tree/dir5/file9 b/t/tree/dir5/file9 new file mode 100644 index 0000000..e69de29