treevisitor 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +6 -1
- data/Rakefile +6 -11
- data/lib/tree_visitor.rb +1 -1
- data/lib/treevisitor.rb +1 -38
- data/lib/treevisitor_cli.rb +2 -4
- data/treevisitor.gemspec +16 -28
- metadata +11 -143
- data/.gemtest +0 -0
- data/bin/tree.rb +0 -9
- data/examples/directory_walker/directory_without_subdirectory.rb +0 -37
- data/examples/directory_walker/find_files.rb +0 -18
- data/examples/directory_walker/print_files.rb +0 -12
- data/examples/protovis/directory_to_json_visitor.rb +0 -15
- data/examples/protovis/index.html +0 -87
- data/examples/protovis/protovis-r3.2.js +0 -277
- data/examples/protovis/treevisitor.js +0 -33
- data/examples/protovis/treevisitor.png +0 -0
- data/lib/treevisitor/abs_node.rb +0 -144
- data/lib/treevisitor/basic_tree_node_visitor.rb +0 -44
- data/lib/treevisitor/cli/cli_tree.rb +0 -106
- data/lib/treevisitor/directory_walker.rb +0 -300
- data/lib/treevisitor/leaf_node.rb +0 -33
- data/lib/treevisitor/tree_node.rb +0 -251
- data/lib/treevisitor/tree_node_visitor.rb +0 -119
- data/lib/treevisitor/util/dir_processor.rb +0 -46
- data/lib/treevisitor/version.rb +0 -4
- data/lib/treevisitor/visitors/block_tree_node_visitor.rb +0 -21
- data/lib/treevisitor/visitors/build_dir_tree_visitor.rb +0 -57
- data/lib/treevisitor/visitors/callback_tree_node_visitor2.rb +0 -48
- data/lib/treevisitor/visitors/clone_tree_node_visitor.rb +0 -39
- data/lib/treevisitor/visitors/depth_tree_node_visitor.rb +0 -27
- data/lib/treevisitor/visitors/directory_to_hash_visitor.rb +0 -33
- data/lib/treevisitor/visitors/flat_print_tree_node_visitors.rb +0 -20
- data/lib/treevisitor/visitors/print_dir_tree_visitor.rb +0 -21
- data/lib/treevisitor/visitors/print_tree_node_visitor.rb +0 -40
- data/spec/fixtures/test_dir_1/.dir_with_dot/dummy.txt +0 -0
- data/spec/fixtures/test_dir_1/dir.1/dir.1.2/file.1.2.1 +0 -0
- data/spec/fixtures/test_dir_1/dir.1/file.1.1 +0 -0
- data/spec/fixtures/test_dir_1/dir.2/file.2.1 +0 -0
- data/spec/fixtures/test_dir_2/[Dsube]/sub/.gitkeep +0 -0
- data/spec/spec_helper.rb +0 -28
- data/spec/treevisitor/cli/cli_tree_spec.rb +0 -69
- data/spec/treevisitor/directory_walker_spec.rb +0 -99
- data/spec/treevisitor/tree_dsl_spec.rb +0 -57
- data/spec/treevisitor/tree_dsl_with_derived_class1_spec.rb +0 -53
- data/spec/treevisitor/tree_dsl_with_derived_class_spec.rb +0 -51
- data/spec/treevisitor/tree_node_paths_spec.rb +0 -70
- data/spec/treevisitor/tree_node_spec.rb +0 -135
- data/spec/treevisitor/tree_node_visitor_delegate_spec.rb +0 -35
- data/spec/treevisitor/tree_node_visitor_dsl_spec.rb +0 -66
- data/spec/treevisitor/util/dir_processor_spec.rb +0 -13
- data/spec/treevisitor/visitors/block_tree_node_visitor_spec.rb +0 -25
- data/spec/treevisitor/visitors/callback_tree_node_visitor2_spec.rb +0 -38
- data/spec/treevisitor/visitors/depth_tree_node_visitor_spec.rb +0 -28
- data/spec/treevisitor/visitors/tree_node_visitors_spec.rb +0 -27
- data/tasks/rspec.rake +0 -34
- data/tasks/yard.rake +0 -36
data/lib/treevisitor/version.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# It calls a block when visit a tree_node or leaf_node
|
5
|
-
#
|
6
|
-
class BlockTreeNodeVisitor < BasicTreeNodeVisitor
|
7
|
-
|
8
|
-
def initialize( &action )
|
9
|
-
@block = action
|
10
|
-
end
|
11
|
-
|
12
|
-
def enter_node( tree_node )
|
13
|
-
@block.call( tree_node )
|
14
|
-
end
|
15
|
-
|
16
|
-
def visit_leaf( leaf_node )
|
17
|
-
@block.call( leaf_node )
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Builds a TreeNode from a filesystem directory
|
5
|
-
# It similar to CloneTreeNodeVisitor
|
6
|
-
#
|
7
|
-
class BuildDirTreeVisitor # < BasicTreeNodeVisitor
|
8
|
-
|
9
|
-
attr_reader :root
|
10
|
-
|
11
|
-
#
|
12
|
-
# Number of visited directory (aka nr_nodes - nr_leaf)
|
13
|
-
#
|
14
|
-
attr_reader :nr_directories
|
15
|
-
|
16
|
-
|
17
|
-
#
|
18
|
-
# Number of visited directory (nr_leaves)
|
19
|
-
# @see AbsNode#nr_leaves
|
20
|
-
#
|
21
|
-
attr_reader :nr_files
|
22
|
-
|
23
|
-
def initialize
|
24
|
-
super
|
25
|
-
@root = nil
|
26
|
-
@stack = []
|
27
|
-
@nr_directories = 0
|
28
|
-
@nr_files = 0
|
29
|
-
end
|
30
|
-
|
31
|
-
def enter_node( pathname )
|
32
|
-
if @stack.empty?
|
33
|
-
tree_node = TreeNode.new( File.basename( pathname ) )
|
34
|
-
@root = tree_node
|
35
|
-
else
|
36
|
-
tree_node = TreeNode.new( File.basename( pathname ), @stack.last )
|
37
|
-
end
|
38
|
-
@nr_directories += 1
|
39
|
-
@stack.push( tree_node )
|
40
|
-
end
|
41
|
-
|
42
|
-
def cannot_enter_node(pathname, error)
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
def exit_node( pathname )
|
47
|
-
@stack.pop
|
48
|
-
end
|
49
|
-
|
50
|
-
def visit_leaf( pathname )
|
51
|
-
@nr_files += 1
|
52
|
-
# connect the leaf_node created to the last tree_node on the stack
|
53
|
-
LeafNode.new( File.basename(pathname), @stack.last )
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end # end module TreeVisitor
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Executes a block when enter in a node
|
5
|
-
# The block are defined from on_enter_X methods
|
6
|
-
# The blocks take as argument the node and the parent_node
|
7
|
-
#
|
8
|
-
class CallbackTreeNodeVisitor2
|
9
|
-
|
10
|
-
attr_reader :root
|
11
|
-
|
12
|
-
def initialize(delegate = nil)
|
13
|
-
super()
|
14
|
-
@stack = []
|
15
|
-
@root = nil
|
16
|
-
@delegate = delegate
|
17
|
-
end
|
18
|
-
|
19
|
-
def on_enter_node(&block)
|
20
|
-
raise "already defined a delegate" if @delegate
|
21
|
-
@action_enter_tree_node = block
|
22
|
-
end
|
23
|
-
|
24
|
-
def on_visit_leaf(&block)
|
25
|
-
raise "already defined a delegate" if @delegate
|
26
|
-
@action_visit_leaf_node = block
|
27
|
-
end
|
28
|
-
|
29
|
-
def enter_node(src_tree_node)
|
30
|
-
dst_parent_node = @stack.empty? ? nil : @stack.last
|
31
|
-
dst_tree_node = @action_enter_tree_node.call(src_tree_node, dst_parent_node) if @action_enter_tree_node
|
32
|
-
dst_tree_node = @delegate.enter_node(src_tree_node, dst_parent_node) if @delegate and @delegate.respond_to? :enter_node
|
33
|
-
@root = dst_tree_node if @stack.empty?
|
34
|
-
@stack.push(dst_tree_node)
|
35
|
-
end
|
36
|
-
|
37
|
-
def exit_node(src_tree_node)
|
38
|
-
@stack.pop
|
39
|
-
end
|
40
|
-
|
41
|
-
def visit_leaf(src_leaf_node)
|
42
|
-
parent_node = @stack.last
|
43
|
-
@action_visit_leaf_node.call(src_leaf_node, parent_node) if @action_visit_leaf_node
|
44
|
-
@delegate.visit_leaf(src_leaf_node, parent_node) if @delegate and @delegate.respond_to? :visit_leaf
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Clone a tree_node, nodes are duplicated.
|
5
|
-
# Node content are not duplicated!
|
6
|
-
#
|
7
|
-
class CloneTreeNodeVisitor # < BasicTreeNodeVisitor
|
8
|
-
|
9
|
-
#
|
10
|
-
# Contains the cloned tree node after the visit
|
11
|
-
#
|
12
|
-
attr_reader :cloned_root
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
super
|
16
|
-
@cloned_root = nil
|
17
|
-
@stack = []
|
18
|
-
end
|
19
|
-
|
20
|
-
def enter_node( tree_node )
|
21
|
-
if @stack.empty?
|
22
|
-
cloned_tree_node = TreeNode.new( tree_node.content )
|
23
|
-
@cloned_root = cloned_tree_node
|
24
|
-
else
|
25
|
-
cloned_tree_node = TreeNode.new( tree_node.content, @stack.last )
|
26
|
-
end
|
27
|
-
@stack.push( cloned_tree_node )
|
28
|
-
end
|
29
|
-
|
30
|
-
def exit_node( tree_node )
|
31
|
-
@stack.pop
|
32
|
-
end
|
33
|
-
|
34
|
-
def visit_leaf( leaf_node )
|
35
|
-
LeafNode.new( leaf_node.content, @stack.last )
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Simple visitor: show how calculate the depth of a tree
|
5
|
-
#
|
6
|
-
class DepthTreeNodeVisitor # < BasicTreeNodeVisitor
|
7
|
-
|
8
|
-
attr_reader :depth
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
super
|
12
|
-
@depth = 0
|
13
|
-
end
|
14
|
-
|
15
|
-
def enter_node( tree_node )
|
16
|
-
@depth += 1
|
17
|
-
end
|
18
|
-
|
19
|
-
def exit_node( tree_node )
|
20
|
-
@depth -= 1
|
21
|
-
end
|
22
|
-
|
23
|
-
def visit_leaf( leaf_node )
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
module TreeVisitor
|
4
|
-
#
|
5
|
-
# Build hash with directory structure
|
6
|
-
#
|
7
|
-
class DirectoryToHashVisitor # < TreeVisitor::BasicTreeNodeVisitor
|
8
|
-
|
9
|
-
attr_reader :root
|
10
|
-
|
11
|
-
def initialize(pathname)
|
12
|
-
@stack = []
|
13
|
-
@node = {}
|
14
|
-
@root = @node
|
15
|
-
end
|
16
|
-
|
17
|
-
def enter_node(pathname)
|
18
|
-
subnode = {}
|
19
|
-
@node[File.basename(pathname)] = subnode
|
20
|
-
@stack.push(@node)
|
21
|
-
@node = subnode
|
22
|
-
end
|
23
|
-
|
24
|
-
def exit_node(pathname)
|
25
|
-
@node = @stack.pop
|
26
|
-
end
|
27
|
-
|
28
|
-
def visit_leaf(pathname)
|
29
|
-
@node[File.basename(pathname)] = File.stat(pathname).size
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Print for every node the name
|
5
|
-
#
|
6
|
-
class FlatPrintTreeNodeVisitor # < BasicTreeNodeVisitor
|
7
|
-
|
8
|
-
def enter_node( tree_node )
|
9
|
-
puts tree_node.name
|
10
|
-
end
|
11
|
-
|
12
|
-
def exit_node( tree_node )
|
13
|
-
end
|
14
|
-
|
15
|
-
def visit_leaf( leaf_node )
|
16
|
-
puts leaf_node.name
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Visitor for DirTreeWalker
|
5
|
-
# Prints the node at enter
|
6
|
-
# TODO: join this con PrintTreeNodeVisitor
|
7
|
-
class PrintDirTreeVisitor # < BasicTreeNodeVisitor
|
8
|
-
|
9
|
-
def enter_node( pathname )
|
10
|
-
puts pathname
|
11
|
-
end
|
12
|
-
|
13
|
-
def exit_node( pathname )
|
14
|
-
end
|
15
|
-
|
16
|
-
def visit_leaf( pathname )
|
17
|
-
puts pathname
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
module TreeVisitor
|
3
|
-
#
|
4
|
-
# Prints TreeNode names indenting according to depth
|
5
|
-
#
|
6
|
-
class PrintTreeNodeVisitor # < BasicTreeNodeVisitor
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@depth = 0
|
10
|
-
end
|
11
|
-
|
12
|
-
def enter_node( tree_node )
|
13
|
-
str = ""
|
14
|
-
(0...@depth).step {
|
15
|
-
str << " |-"
|
16
|
-
}
|
17
|
-
|
18
|
-
if @depth == 0
|
19
|
-
puts str + tree_node.name.to_s
|
20
|
-
else
|
21
|
-
puts str + tree_node.name.to_s
|
22
|
-
end
|
23
|
-
@depth += 1
|
24
|
-
end
|
25
|
-
|
26
|
-
def exit_node( tree_node )
|
27
|
-
@depth -= 1
|
28
|
-
end
|
29
|
-
|
30
|
-
def visit_leaf( leaf_node )
|
31
|
-
str = ""
|
32
|
-
(0...@depth-1).step {
|
33
|
-
str << " |-"
|
34
|
-
}
|
35
|
-
str << " | "
|
36
|
-
puts str + leaf_node.name.to_s
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
#
|
3
|
-
# std lib
|
4
|
-
#
|
5
|
-
require "stringio"
|
6
|
-
|
7
|
-
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
|
-
require 'treevisitor'
|
9
|
-
require 'treevisitor_cli'
|
10
|
-
include TreeVisitor
|
11
|
-
|
12
|
-
FIXTURES = File.expand_path( File.join( File.dirname(__FILE__), "fixtures" ) )
|
13
|
-
|
14
|
-
def with_output_captured
|
15
|
-
old_stdout = $stdout
|
16
|
-
old_stderr = $stderr
|
17
|
-
out = StringIO.new
|
18
|
-
err = StringIO.new
|
19
|
-
$stdout = out
|
20
|
-
$stderr = err
|
21
|
-
begin
|
22
|
-
yield
|
23
|
-
ensure
|
24
|
-
$stdout = old_stdout
|
25
|
-
$stderr = old_stderr
|
26
|
-
end
|
27
|
-
{ :stdout => out.string, :stderr => err.string }
|
28
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
3
|
-
|
4
|
-
describe CliTree do
|
5
|
-
|
6
|
-
it "help message" do
|
7
|
-
out = with_output_captured do
|
8
|
-
args = %w{-h}
|
9
|
-
CliTree.new.parse_args(args)
|
10
|
-
end
|
11
|
-
out[:stdout].should match /Usage:/
|
12
|
-
end
|
13
|
-
|
14
|
-
it "version" do
|
15
|
-
out = with_output_captured do
|
16
|
-
args = %w{--version}
|
17
|
-
CliTree.new.parse_args(args)
|
18
|
-
end
|
19
|
-
version = TreeVisitor::VERSION
|
20
|
-
out[:stdout].should match version
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should accepts switch -d (directories only)" do
|
24
|
-
out = with_output_captured do
|
25
|
-
args = %w{-d}
|
26
|
-
args << File.join(FIXTURES, "test_dir_1")
|
27
|
-
CliTree.new.parse_args(args)
|
28
|
-
end
|
29
|
-
# puts out
|
30
|
-
out[:stdout].split("\n").length.should == 6
|
31
|
-
|
32
|
-
out = with_output_captured do
|
33
|
-
args = %w{-da}
|
34
|
-
args << File.join(FIXTURES, "test_dir_1")
|
35
|
-
CliTree.new.parse_args(args)
|
36
|
-
end
|
37
|
-
# puts out
|
38
|
-
out[:stdout].split("\n").length.should == 7
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should accepts switch -a (all files)" do
|
42
|
-
out = with_output_captured do
|
43
|
-
args = %w{-a}
|
44
|
-
args << File.join(FIXTURES, "test_dir_1")
|
45
|
-
CliTree.new.parse_args(args)
|
46
|
-
end
|
47
|
-
# pp out
|
48
|
-
out[:stdout].split("\n").length.should == 11
|
49
|
-
|
50
|
-
out = with_output_captured do
|
51
|
-
args = []
|
52
|
-
args << File.join(FIXTURES, "test_dir_1")
|
53
|
-
CliTree.new.parse_args(args)
|
54
|
-
end
|
55
|
-
# puts out
|
56
|
-
out[:stdout].split("\n").length.should == 9
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should show tree with inaccessible directories" do
|
60
|
-
out = with_output_captured do
|
61
|
-
args = []
|
62
|
-
args << File.join(FIXTURES, "test_dir_3_with_error")
|
63
|
-
CliTree.new.parse_args(args)
|
64
|
-
end
|
65
|
-
puts out
|
66
|
-
out[:stderr].should_not be_empty
|
67
|
-
out[:stdout].split("\n").length.should == 4
|
68
|
-
end
|
69
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
|
-
|
4
|
-
describe DirTreeWalker do
|
5
|
-
|
6
|
-
it "should accept option :ignore" do
|
7
|
-
walker = DirTreeWalker.new :ignore => /^\./
|
8
|
-
walker.ignore_file?(".thumbnails").should be_true
|
9
|
-
walker.ignore_dir?(".thumbnails").should be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should accept option :ignore" do
|
13
|
-
walker = DirTreeWalker.new :ignore => ".git"
|
14
|
-
walker.ignore_file?(".git").should be_true
|
15
|
-
walker.ignore_dir?(".git").should be_true
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
it "should accept option :ignore_dir" do
|
20
|
-
dtw = DirTreeWalker.new :ignore_dir => [/^\./, "private_dir" ]
|
21
|
-
dtw.should be_ignore_dir ".git"
|
22
|
-
dtw.should be_ignore_dir "private_dir"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should accept option :ignore_file" do
|
26
|
-
dtw = DirTreeWalker.new :ignore_file => [/.xml/, /(ignore)|(orig)/ ]
|
27
|
-
dtw.should be_ignore_file "pippo.xml"
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should accept option :match" do
|
31
|
-
dtw = DirTreeWalker.new :match => /.jpg/
|
32
|
-
dtw.should be_match "foo.jpg"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should ignore files and directory" do
|
36
|
-
walker = DirTreeWalker.new(".")
|
37
|
-
|
38
|
-
walker.ignore(/^\./)
|
39
|
-
walker.ignore_file?(".thumbnails").should be_true
|
40
|
-
walker.ignore_dir?(".thumbnails").should be_true
|
41
|
-
|
42
|
-
walker.ignore_dir("thumbnails")
|
43
|
-
walker.ignore_dir?(".thumbnails").should be_true
|
44
|
-
walker.ignore_dir?("thumbnails").should be_true
|
45
|
-
walker.ignore_dir?("pippo").should be_false
|
46
|
-
|
47
|
-
walker.ignore_file("xvpics")
|
48
|
-
walker.ignore_file?("xvpics").should be_true
|
49
|
-
|
50
|
-
walker.ignore("sub")
|
51
|
-
walker.ignore_file?("[Dsube]").should be_false
|
52
|
-
walker.ignore_dir?("[Dsube]").should be_false
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should accumulate file names" do
|
56
|
-
dir_tree_walker = DirTreeWalker.new(File.join(FIXTURES, "test_dir_1"))
|
57
|
-
|
58
|
-
accumulator = []
|
59
|
-
visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename(pathname) }
|
60
|
-
dir_tree_walker.run(visitor)
|
61
|
-
accumulator.length.should == 9
|
62
|
-
accumulator.sort.should == %w{ test_dir_1 dir.1 dir.1.2 file.1.2.1 file.1.1 dir.2 file.2.1 .dir_with_dot dummy.txt }.sort
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should accumulate file names 2" do
|
66
|
-
dir_tree_walker = DirTreeWalker.new(File.join(FIXTURES, "test_dir_2"))
|
67
|
-
dir_tree_walker.ignore("sub")
|
68
|
-
|
69
|
-
accumulator = []
|
70
|
-
visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename(pathname) }
|
71
|
-
dir_tree_walker.run(visitor)
|
72
|
-
accumulator.length.should == 2
|
73
|
-
accumulator.sort.should == %w{ [Dsube] test_dir_2 }.sort
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should ignore not accessible directory" do
|
77
|
-
|
78
|
-
dir = File.join(FIXTURES, "test_dir_3_with_error")
|
79
|
-
|
80
|
-
f1 = File.join(dir, "no_accessible_dir")
|
81
|
-
Dir.rmdir(f1) if File.exist?(f1)
|
82
|
-
Dir.mkdir(f1, 0000)
|
83
|
-
|
84
|
-
f2 = File.join(dir, "accessible_dir")
|
85
|
-
Dir.rmdir(f2) if File.exist?(f2)
|
86
|
-
Dir.mkdir(f2)
|
87
|
-
|
88
|
-
dir_tree_walker = DirTreeWalker.new(File.join(FIXTURES, "test_dir_3_with_error"))
|
89
|
-
accumulator = []
|
90
|
-
visitor = BlockTreeNodeVisitor.new { |pathname| accumulator << File.basename(pathname) }
|
91
|
-
dir_tree_walker.run(visitor)
|
92
|
-
accumulator.length.should == 2
|
93
|
-
accumulator.sort.should == %w{accessible_dir test_dir_3_with_error }.sort
|
94
|
-
|
95
|
-
# Dir.rmdir(f1)
|
96
|
-
# Dir.rmdir(f2)
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|