Commits

shl...@52c325ad-5fd0-0310-8a0f-c43feede02cc  committed 001ee65

Implemented the up_level to the 0'th level at the end.

  • Participants
  • Parent commits b818896

Comments (0)

Files changed (2)

File File-Dir-Dumper/lib/File/Dir/Dumper/Scanner.pm

     return shift(@{$self->_queue()});
 }
 
+sub _up_to_level
+{
+    my $self = shift;
+    my $target_level = shift;
+
+    my $last_result = $self->_last_result();
+
+    for my $level (
+        reverse($target_level .. $#{$last_result->dir_components()})
+    )
+    {
+        $self->_add(
+            {
+                type => "updir",
+                depth => $level+1,
+            }
+        )
+    }
+
+    return;
+}
+
 sub _populate_queue
 {
     my $self = shift;
     {
         $self->_add({ type => "dir", depth => 0 });
     }
+    elsif (! $result)
+    {
+        $self->_up_to_level(-1);
+    }
     else
     {
         my $i = 0;
             $i++;
         }
 
-        for my $level (reverse($i .. $#{$last_result->dir_components()}))
-        {
-            $self->_add(
-                {
-                    type => "updir",
-                    depth => $level+1,
-                }
-            )
-        }
+        $self->_up_to_level($i);
 
         if ($result->is_dir())
         {

File File-Dir-Dumper/t/dumper.t

 use strict;
 use warnings;
 
-use Test::More tests => 20;
+use Test::More tests => 24;
 
 use POSIX qw(mktime strftime);
 use File::Path;
     $token = $scanner->fetch();
 
     # TEST
-    is ($token->{type}, "updir", "Token is exitdir");
+    is ($token->{type}, "updir", "Token is updir");
 
     # TEST
-    is ($token->{depth}, 1, "exitdir token (from 'b') has depth 1");
+    is ($token->{depth}, 1, "updir token (from 'b') has depth 1");
 
     $token = $scanner->fetch();
 
     # TEST
     is ($token->{depth}, 2, "Token depth is 2");
 
+    $token = $scanner->fetch();
+
+    # TEST
+    is ($token->{type}, "updir", "Token is updir");
+
+    # TEST
+    is ($token->{depth}, 2, "Token depth is 2");
+    
+    $token = $scanner->fetch();
+
+    # TEST
+    is ($token->{type}, "updir", "Token is updir");
+
+    # TEST
+    is ($token->{depth}, 1, "Token depth is 2");
+
     rmtree($t->get_path($test_dir))
 }