tree.rb 0.3.5 → 0.3.6
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/lib/tree_rb.rb +15 -7
- data/lib/tree_rb/cli/cli_tree.rb +18 -42
- data/lib/tree_rb/version.rb +1 -1
- data/lib/tree_rb/visitors/build_dir_tree_visitor.rb +5 -1
- data/lib/tree_rb/visitors/sqlite_dir_tree_visitor.rb +48 -0
- data/spec/fixtures/test_dir_1/.dir_with_dot/dummy.txt +1 -0
- data/spec/fixtures/test_dir_1/dir.1/dir.1.2/file.1.2.1 +1 -0
- data/spec/fixtures/test_dir_1/dir.1/file.1.1 +1 -0
- data/spec/fixtures/test_dir_1/dir.2/file.2.1 +1 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/tree_rb/cli/cli_tree_digest_spec.rb +36 -0
- data/spec/tree_rb/cli/cli_tree_generic_spec.rb +73 -0
- data/spec/tree_rb/cli/cli_tree_sqlite_spec.rb +22 -0
- data/spec/tree_rb/util/dir_processor_spec.rb +3 -1
- data/tree.rb.gemspec +3 -5
- metadata +11 -6
- data/spec/tree_rb/cli/cli_tree_spec.rb +0 -69
data/lib/tree_rb.rb
CHANGED
@@ -37,12 +37,20 @@ require 'tree_rb/directory_walker'
|
|
37
37
|
#
|
38
38
|
# visitors
|
39
39
|
#
|
40
|
-
require 'tree_rb/visitors/block_tree_node_visitor'
|
41
|
-
require 'tree_rb/visitors/build_dir_tree_visitor'
|
42
|
-
require 'tree_rb/visitors/callback_tree_node_visitor2'
|
43
|
-
require 'tree_rb/visitors/clone_tree_node_visitor'
|
44
|
-
require 'tree_rb/visitors/depth_tree_node_visitor'
|
45
|
-
require 'tree_rb/visitors/print_dir_tree_visitor'
|
46
|
-
require 'tree_rb/visitors/directory_to_hash_visitor'
|
40
|
+
#require 'tree_rb/visitors/block_tree_node_visitor'
|
41
|
+
#require 'tree_rb/visitors/build_dir_tree_visitor'
|
42
|
+
#require 'tree_rb/visitors/callback_tree_node_visitor2'
|
43
|
+
#require 'tree_rb/visitors/clone_tree_node_visitor'
|
44
|
+
#require 'tree_rb/visitors/depth_tree_node_visitor'
|
45
|
+
#require 'tree_rb/visitors/print_dir_tree_visitor'
|
46
|
+
#require 'tree_rb/visitors/directory_to_hash_visitor'
|
47
|
+
#require 'tree_rb/visitors/sqlite_dir_tree_visitor'
|
48
|
+
|
49
|
+
visitors_dir = File.join(File.dirname(__FILE__), "tree_rb", "visitors")
|
50
|
+
unless Dir.exist? visitors_dir
|
51
|
+
raise "cannot found directory '#{visitors_dir}'"
|
52
|
+
end
|
53
|
+
Dir[ File.join(visitors_dir, "*.rb") ].each { |f|require f }
|
54
|
+
|
47
55
|
|
48
56
|
require 'tree_rb/util/dir_processor'
|
data/lib/tree_rb/cli/cli_tree.rb
CHANGED
@@ -116,13 +116,15 @@ module TreeRb
|
|
116
116
|
options[:only_files] = true
|
117
117
|
options[:show_md5sum] = true
|
118
118
|
options[:show_indentation] = false
|
119
|
+
options[:show_report] = false
|
119
120
|
end
|
120
121
|
|
121
122
|
options[:show_sha1sum] = false
|
122
|
-
parser.on("--
|
123
|
+
parser.on("--sha1sum", "show ake sha1sum output implies -i and --only-files") do
|
123
124
|
options[:only_files] = true
|
124
125
|
options[:show_sha1sum] = true
|
125
126
|
options[:show_indentation] = false
|
127
|
+
options[:show_report] = false
|
126
128
|
end
|
127
129
|
|
128
130
|
parser.on("-o [FILE]", "--output [FILE]", String) do |v|
|
@@ -138,6 +140,11 @@ module TreeRb
|
|
138
140
|
options[:force_overwrite_output] = true
|
139
141
|
end
|
140
142
|
|
143
|
+
options[:show_report] = true
|
144
|
+
parser.on("--noreport", "Omits printing of the file and directory report at the end of the tree listing.") do
|
145
|
+
options[:show_report] = false
|
146
|
+
end
|
147
|
+
|
141
148
|
parser
|
142
149
|
end
|
143
150
|
|
@@ -210,8 +217,11 @@ module TreeRb
|
|
210
217
|
dtw.run(visitor)
|
211
218
|
|
212
219
|
output.puts visitor.root.to_str('', options)
|
213
|
-
|
214
|
-
|
220
|
+
|
221
|
+
if options[:show_report]
|
222
|
+
output.puts
|
223
|
+
output.puts "#{visitor.nr_directories} directories, #{visitor.nr_files} files"
|
224
|
+
end
|
215
225
|
|
216
226
|
when 'print-dir'
|
217
227
|
visitor = PrintDirTreeVisitor.new
|
@@ -235,45 +245,11 @@ module TreeRb
|
|
235
245
|
else
|
236
246
|
output.close
|
237
247
|
filename = options[:output]
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
me = self
|
244
|
-
bytes = 0
|
245
|
-
dtw.run do
|
246
|
-
on_leaf do |filename|
|
247
|
-
|
248
|
-
puts filename
|
249
|
-
digest = SHA1.file(filename).hexdigest
|
250
|
-
db.execute("insert into files values(\"#{digest}\",\"#{filename}\")")
|
251
|
-
|
252
|
-
# entry = Entry.from_filename(filename)
|
253
|
-
# me.add_entry(entry)
|
254
|
-
# bytes += entry.size
|
255
|
-
# if me.verbose_level > 0
|
256
|
-
# print "#{CR}#{filename}#{CLEAR}"
|
257
|
-
# end
|
258
|
-
# if me.show_progress
|
259
|
-
# sec = Time.now - start
|
260
|
-
# print "#{CR}bytes: #{bytes.to_human} time: #{sec} bytes/sec #{bytes/sec} #{CLEAR}"
|
261
|
-
# end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
# Loop through digests.
|
266
|
-
db.execute("select digest,count(1) as count from files group by digest order by count desc").each do |row|
|
267
|
-
if row[1] > 1 # Skip unique files.
|
268
|
-
puts "Duplicates found:"
|
269
|
-
digest = row[0]
|
270
|
-
# List the duplicate files.
|
271
|
-
db.execute("select digest,path from files where digest='#{digest}'").each do |dup_row|
|
272
|
-
puts "[#{digest}] #{dup_row[1]}"
|
273
|
-
end
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
248
|
+
visitor = SqliteDirTreeVisitor.new(filename)
|
249
|
+
#start = Time.now
|
250
|
+
#me = self
|
251
|
+
#bytes = 0
|
252
|
+
dtw.run(visitor)
|
277
253
|
end
|
278
254
|
|
279
255
|
rescue LoadError
|
data/lib/tree_rb/version.rb
CHANGED
@@ -35,7 +35,11 @@ module TreeRb
|
|
35
35
|
end
|
36
36
|
|
37
37
|
if options[:show_md5sum]
|
38
|
-
@str = "#{MD5.file(pathname).hexdigest}
|
38
|
+
@str = "#{MD5.file(pathname).hexdigest} #{file_name}"
|
39
|
+
return
|
40
|
+
end
|
41
|
+
if options[:show_sha1sum]
|
42
|
+
@str = "#{SHA1.file(pathname).hexdigest} #{file_name}"
|
39
43
|
return
|
40
44
|
end
|
41
45
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module TreeRb
|
3
|
+
|
4
|
+
class SqliteDirTreeVisitor < BasicTreeNodeVisitor
|
5
|
+
|
6
|
+
def initialize(filename)
|
7
|
+
@db = SQLite3::Database.new(filename)
|
8
|
+
@db.execute("create table files(path varchar(1024), size integer, digest varchar(40))")
|
9
|
+
end
|
10
|
+
|
11
|
+
def visit_leaf(pathname)
|
12
|
+
puts pathname
|
13
|
+
stat = File.lstat(pathname)
|
14
|
+
digest = SHA1.file(pathname).hexdigest
|
15
|
+
@db.execute("insert into files (path, size, digest) values ( \"#{pathname}\", \"#{stat.size}\", \"#{digest}\")")
|
16
|
+
|
17
|
+
# entry = Entry.from_filename(filename)
|
18
|
+
# me.add_entry(entry)
|
19
|
+
# bytes += entry.size
|
20
|
+
# if me.verbose_level > 0
|
21
|
+
# print "#{CR}#{filename}#{CLEAR}"
|
22
|
+
# end
|
23
|
+
# if me.show_progress
|
24
|
+
# sec = Time.now - start
|
25
|
+
# print "#{CR}bytes: #{bytes.to_human} time: #{sec} bytes/sec #{bytes/sec} #{CLEAR}"
|
26
|
+
# end
|
27
|
+
#content = ContentFile.new(pathname, @options)
|
28
|
+
# connect the leaf_node created to the last tree_node on the stack
|
29
|
+
#@nr_files += 1
|
30
|
+
#LeafNode.new(content, @stack.last)
|
31
|
+
end
|
32
|
+
|
33
|
+
def find_duplicates
|
34
|
+
# Loop through digests.
|
35
|
+
@db.execute("select digest,count(1) as count from files group by digest order by count desc").each do |row|
|
36
|
+
if row[1] > 1 # Skip unique files.
|
37
|
+
puts "Duplicates found:"
|
38
|
+
digest = row[0]
|
39
|
+
# List the duplicate files.
|
40
|
+
db.execute("select digest,path from files where digest='#{digest}'").each do |dup_row|
|
41
|
+
puts "[#{digest}] #{dup_row[1]}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end # end module TreeVisitor
|
@@ -0,0 +1 @@
|
|
1
|
+
dummy.txt
|
@@ -0,0 +1 @@
|
|
1
|
+
file.1.2.1
|
@@ -0,0 +1 @@
|
|
1
|
+
file.1.1
|
@@ -0,0 +1 @@
|
|
1
|
+
file.2.1
|
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,11 @@
|
|
3
3
|
# std lib
|
4
4
|
#
|
5
5
|
require "stringio"
|
6
|
+
require 'ostruct'
|
6
7
|
|
8
|
+
#
|
9
|
+
# gem
|
10
|
+
#
|
7
11
|
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
12
|
require 'tree_rb'
|
9
13
|
require 'tree_rb_cli'
|
@@ -11,7 +15,7 @@ include TreeRb
|
|
11
15
|
|
12
16
|
FIXTURES = File.expand_path( File.join( File.dirname(__FILE__), "fixtures" ) )
|
13
17
|
|
14
|
-
def
|
18
|
+
def capture_output
|
15
19
|
old_stdout, old_stderr = $stdout, $stderr
|
16
20
|
out = StringIO.new
|
17
21
|
err = StringIO.new
|
@@ -23,5 +27,5 @@ def with_output_captured
|
|
23
27
|
$stdout = old_stdout
|
24
28
|
$stderr = old_stderr
|
25
29
|
end
|
26
|
-
|
30
|
+
OpenStruct.new(:out => out.string, :err => err.string)
|
27
31
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
3
|
+
|
4
|
+
describe CliTree do
|
5
|
+
|
6
|
+
it "should accepts --md5sum switch" do
|
7
|
+
captured = capture_output do
|
8
|
+
args = %w{--md5sum}
|
9
|
+
args << File.join(FIXTURES, "test_dir_1")
|
10
|
+
CliTree.new.parse_args(args)
|
11
|
+
end
|
12
|
+
|
13
|
+
certified_out=<<-EOS
|
14
|
+
a4788ba25d42f21003db11ec53112f1e file.1.1
|
15
|
+
afb96f2652f4ba3cd84f7be0ae6fffe3 file.1.2.1
|
16
|
+
c4c0c530b842efe4038ac4a659bfbe77 file.2.1
|
17
|
+
EOS
|
18
|
+
captured.out.should == certified_out
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should accepts --sha1sum switch" do
|
22
|
+
captured = capture_output do
|
23
|
+
args = %w{--sha1sum}
|
24
|
+
args << File.join(FIXTURES, "test_dir_1")
|
25
|
+
CliTree.new.parse_args(args)
|
26
|
+
end
|
27
|
+
|
28
|
+
certified_out=<<-EOS
|
29
|
+
9140d4031d95f459eb0bee8160509e5d83271fe8 file.1.1
|
30
|
+
4b7f45a8c0be069e7eac5f7d64b997c92c740656 file.1.2.1
|
31
|
+
3c58aeb1552b0318a86279b52c918f2fb953b4b9 file.2.1
|
32
|
+
EOS
|
33
|
+
captured.out.should == certified_out
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
3
|
+
|
4
|
+
describe CliTree do
|
5
|
+
|
6
|
+
it "should accept --help switch" do
|
7
|
+
captured = capture_output do
|
8
|
+
args = %w{--help}
|
9
|
+
CliTree.new.parse_args(args)
|
10
|
+
end
|
11
|
+
captured.out.should match /Usage:/
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should accept --version switch" do
|
15
|
+
captured = capture_output do
|
16
|
+
args = %w{--version}
|
17
|
+
CliTree.new.parse_args(args)
|
18
|
+
end
|
19
|
+
version = TreeRb::VERSION
|
20
|
+
captured.out.should match version
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should accepts -d switch (directories only)" do
|
24
|
+
captured = capture_output do
|
25
|
+
args = %w{-d}
|
26
|
+
args << File.join(FIXTURES, "test_dir_1")
|
27
|
+
CliTree.new.parse_args(args)
|
28
|
+
end
|
29
|
+
# puts captured
|
30
|
+
captured.out.split("\n").length.should == 6
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should accepts -da switch (directories only)" do
|
34
|
+
captured = capture_output do
|
35
|
+
args = %w{-da}
|
36
|
+
args << File.join(FIXTURES, "test_dir_1")
|
37
|
+
CliTree.new.parse_args(args)
|
38
|
+
end
|
39
|
+
# puts captured
|
40
|
+
captured.out.split("\n").length.should == 7
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should accepts -a switch (all files)" do
|
44
|
+
captured = capture_output do
|
45
|
+
args = %w{-a}
|
46
|
+
args << File.join(FIXTURES, "test_dir_1")
|
47
|
+
CliTree.new.parse_args(args)
|
48
|
+
end
|
49
|
+
# pp captured
|
50
|
+
captured.out.split("\n").length.should == 11
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should accepts -a switch (all files)" do
|
54
|
+
captured = capture_output do
|
55
|
+
args = []
|
56
|
+
args << File.join(FIXTURES, "test_dir_1")
|
57
|
+
CliTree.new.parse_args(args)
|
58
|
+
end
|
59
|
+
# puts captured
|
60
|
+
captured.out.split("\n").length.should == 9
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should show tree with inaccessible directories" do
|
64
|
+
captured = capture_output do
|
65
|
+
args = []
|
66
|
+
args << File.join(FIXTURES, "test_dir_3_with_error")
|
67
|
+
CliTree.new.parse_args(args)
|
68
|
+
end
|
69
|
+
#puts captured
|
70
|
+
captured.err.should_not be_empty
|
71
|
+
captured.out.split("\n").length.should == 4
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
3
|
+
|
4
|
+
describe CliTree do
|
5
|
+
|
6
|
+
it "should accepts '--format sqlite -o test.db' switches" do
|
7
|
+
db_filename = File.join(FIXTURES, 'tmp', 'test.db')
|
8
|
+
|
9
|
+
File.unlink(db_filename) if File.exist?(db_filename)
|
10
|
+
|
11
|
+
captured = capture_output do
|
12
|
+
args = %w{--format sqlite -o } << db_filename
|
13
|
+
args << File.join(FIXTURES, "test_dir_1")
|
14
|
+
CliTree.new.parse_args(args)
|
15
|
+
end
|
16
|
+
|
17
|
+
File.exist?(db_filename).should be_true
|
18
|
+
|
19
|
+
File.unlink(db_filename) if File.exist?(db_filename)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -3,10 +3,12 @@ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
3
3
|
|
4
4
|
describe DirProcessor do
|
5
5
|
|
6
|
-
it do
|
6
|
+
it "should capture all files" do
|
7
7
|
files = []
|
8
8
|
dp = DirProcessor.new { |f| files << f }
|
9
9
|
dp.process(FIXTURES)
|
10
|
+
|
11
|
+
# puts files
|
10
12
|
files.length.should == 3
|
11
13
|
end
|
12
14
|
|
data/tree.rb.gemspec
CHANGED
@@ -48,7 +48,7 @@ An example of DSL to build tree:
|
|
48
48
|
|
49
49
|
gem.add_runtime_dependency(%q<json>, [">= 0"])
|
50
50
|
gem.add_runtime_dependency(%q<ansi>, [">= 0"])
|
51
|
-
gem.add_runtime_dependency(%q<sqlite3
|
51
|
+
gem.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
52
52
|
|
53
53
|
gem.add_development_dependency(%q<rake>, [">= 0"])
|
54
54
|
gem.add_development_dependency(%q<yard>, [">= 0"])
|
@@ -58,7 +58,6 @@ An example of DSL to build tree:
|
|
58
58
|
#
|
59
59
|
# files
|
60
60
|
#
|
61
|
-
# s.files = `git ls-files`.split("\n")
|
62
61
|
# gem.files = `git ls-files`.split($\)
|
63
62
|
gem.files = %w{LICENSE.txt README.md Rakefile tree.rb.gemspec .gemtest}
|
64
63
|
gem.files.concat Dir['ext/**/*.rb']
|
@@ -69,10 +68,9 @@ An example of DSL to build tree:
|
|
69
68
|
#
|
70
69
|
# bin
|
71
70
|
#
|
72
|
-
#
|
71
|
+
# gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
73
72
|
# gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
74
|
-
|
75
|
-
gem.executables = %w{ tree.rb rtree tree_rb }
|
73
|
+
gem.executables = Dir["bin/*"].map(&File.method(:basename))
|
76
74
|
|
77
75
|
|
78
76
|
#
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tree.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name: sqlite3
|
47
|
+
name: sqlite3
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
@@ -131,8 +131,8 @@ description: ! "(This gem was named as treevisitor)\ntree.rb is a 'clone' of tre
|
|
131
131
|
\"l3\"\n end\n node \"wo leaves\"\n end\n</pre>\n"
|
132
132
|
email: tokiro.oyama@gmail.com
|
133
133
|
executables:
|
134
|
-
- tree.rb
|
135
134
|
- rtree
|
135
|
+
- tree.rb
|
136
136
|
- tree_rb
|
137
137
|
extensions: []
|
138
138
|
extra_rdoc_files: []
|
@@ -153,6 +153,7 @@ files:
|
|
153
153
|
- lib/tree_rb/visitors/depth_tree_node_visitor.rb
|
154
154
|
- lib/tree_rb/visitors/print_tree_node_visitor.rb
|
155
155
|
- lib/tree_rb/visitors/callback_tree_node_visitor2.rb
|
156
|
+
- lib/tree_rb/visitors/sqlite_dir_tree_visitor.rb
|
156
157
|
- lib/tree_rb/visitors/directory_to_hash_visitor.rb
|
157
158
|
- lib/tree_rb/visitors/flat_print_tree_node_visitors.rb
|
158
159
|
- lib/tree_rb/visitors/block_tree_node_visitor.rb
|
@@ -179,7 +180,9 @@ files:
|
|
179
180
|
- examples/protovis/treevisitor.js
|
180
181
|
- examples/protovis/directory_to_json_visitor.rb
|
181
182
|
- spec/spec_helper.rb
|
182
|
-
- spec/tree_rb/cli/
|
183
|
+
- spec/tree_rb/cli/cli_tree_sqlite_spec.rb
|
184
|
+
- spec/tree_rb/cli/cli_tree_digest_spec.rb
|
185
|
+
- spec/tree_rb/cli/cli_tree_generic_spec.rb
|
183
186
|
- spec/tree_rb/util/dir_processor_spec.rb
|
184
187
|
- spec/tree_rb/visitors/depth_tree_node_visitor_spec.rb
|
185
188
|
- spec/tree_rb/visitors/callback_tree_node_visitor2_spec.rb
|
@@ -200,8 +203,8 @@ files:
|
|
200
203
|
- spec/fixtures/test_dir_1/dir.2/file.2.1
|
201
204
|
- spec/fixtures/test_dir_2/[Dsube]/sub/.gitkeep
|
202
205
|
- spec/fixtures/test_dir_1/.dir_with_dot/dummy.txt
|
203
|
-
- bin/tree.rb
|
204
206
|
- bin/rtree
|
207
|
+
- bin/tree.rb
|
205
208
|
- bin/tree_rb
|
206
209
|
homepage: http://github.com/tokiro/tree.rb
|
207
210
|
licenses: []
|
@@ -230,7 +233,9 @@ summary: tree.rb is a 'clone' of tree unix command. The gem implements a library
|
|
230
233
|
mange tree structures.
|
231
234
|
test_files:
|
232
235
|
- spec/spec_helper.rb
|
233
|
-
- spec/tree_rb/cli/
|
236
|
+
- spec/tree_rb/cli/cli_tree_sqlite_spec.rb
|
237
|
+
- spec/tree_rb/cli/cli_tree_digest_spec.rb
|
238
|
+
- spec/tree_rb/cli/cli_tree_generic_spec.rb
|
234
239
|
- spec/tree_rb/util/dir_processor_spec.rb
|
235
240
|
- spec/tree_rb/visitors/depth_tree_node_visitor_spec.rb
|
236
241
|
- spec/tree_rb/visitors/callback_tree_node_visitor2_spec.rb
|
@@ -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{--help}
|
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 = TreeRb::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
|