Commits

Anonymous committed 001ee65

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

Comments (0)

Files changed (2)

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-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))
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.