scout-gear 1.2.0 → 5.1.1

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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +4 -0
  3. data/.vimproject +663 -4
  4. data/Rakefile +1 -0
  5. data/VERSION +1 -1
  6. data/bin/scout +235 -0
  7. data/lib/scout/cmd.rb +344 -0
  8. data/lib/scout/concurrent_stream.rb +259 -0
  9. data/lib/scout/exceptions.rb +15 -8
  10. data/lib/scout/indiferent_hash/options.rb +8 -26
  11. data/lib/scout/indiferent_hash.rb +0 -30
  12. data/lib/scout/log/color.rb +2 -2
  13. data/lib/scout/log/fingerprint.rb +11 -1
  14. data/lib/scout/log/progress/report.rb +0 -1
  15. data/lib/scout/log/progress/util.rb +1 -1
  16. data/lib/scout/log/progress.rb +4 -4
  17. data/lib/scout/log.rb +10 -2
  18. data/lib/scout/meta_extension.rb +15 -1
  19. data/lib/scout/misc/digest.rb +56 -0
  20. data/lib/scout/misc/filesystem.rb +26 -0
  21. data/lib/scout/misc/format.rb +226 -0
  22. data/lib/scout/misc/insist.rb +56 -0
  23. data/lib/scout/misc.rb +5 -11
  24. data/lib/scout/open/lock.rb +61 -0
  25. data/lib/scout/open/remote.rb +120 -0
  26. data/lib/scout/open/stream.rb +372 -0
  27. data/lib/scout/open/util.rb +225 -0
  28. data/lib/scout/open.rb +169 -0
  29. data/lib/scout/path/find.rb +78 -26
  30. data/lib/scout/path/tmpfile.rb +8 -0
  31. data/lib/scout/path/util.rb +17 -5
  32. data/lib/scout/path.rb +13 -31
  33. data/lib/scout/persist/open.rb +17 -0
  34. data/lib/scout/persist/path.rb +15 -0
  35. data/lib/scout/persist/serialize.rb +140 -0
  36. data/lib/scout/persist.rb +54 -0
  37. data/lib/scout/resource/path.rb +15 -0
  38. data/lib/scout/resource/produce/rake.rb +69 -0
  39. data/lib/scout/resource/produce.rb +246 -0
  40. data/lib/scout/resource/scout.rb +3 -0
  41. data/lib/scout/resource.rb +37 -0
  42. data/lib/scout/simple_opt/accessor.rb +54 -0
  43. data/lib/scout/simple_opt/doc.rb +102 -0
  44. data/lib/scout/simple_opt/get.rb +57 -0
  45. data/lib/scout/simple_opt/parse.rb +67 -0
  46. data/lib/scout/simple_opt/setup.rb +26 -0
  47. data/lib/scout/simple_opt.rb +5 -0
  48. data/lib/scout/tmpfile.rb +39 -1
  49. data/lib/scout/workflow/definition.rb +72 -0
  50. data/lib/scout/workflow/documentation.rb +77 -0
  51. data/lib/scout/workflow/step/info.rb +77 -0
  52. data/lib/scout/workflow/step.rb +96 -0
  53. data/lib/scout/workflow/task/inputs.rb +112 -0
  54. data/lib/scout/workflow/task.rb +141 -0
  55. data/lib/scout/workflow/usage.rb +294 -0
  56. data/lib/scout/workflow/util.rb +11 -0
  57. data/lib/scout/workflow.rb +39 -0
  58. data/lib/scout-gear.rb +5 -0
  59. data/lib/scout.rb +1 -0
  60. data/lib/workflow-scout.rb +2 -0
  61. data/scout-gear.gemspec +78 -5
  62. data/scout_commands/alias +48 -0
  63. data/scout_commands/find +83 -0
  64. data/scout_commands/glob +0 -0
  65. data/scout_commands/rbbt +23 -0
  66. data/scout_commands/workflow/task +707 -0
  67. data/test/scout/indiferent_hash/test_case_insensitive.rb +16 -0
  68. data/test/scout/indiferent_hash/test_options.rb +11 -1
  69. data/test/scout/misc/test_digest.rb +30 -0
  70. data/test/scout/misc/test_filesystem.rb +30 -0
  71. data/test/scout/misc/test_insist.rb +13 -0
  72. data/test/scout/open/test_lock.rb +52 -0
  73. data/test/scout/open/test_remote.rb +25 -0
  74. data/test/scout/open/test_stream.rb +515 -0
  75. data/test/scout/open/test_util.rb +73 -0
  76. data/test/scout/path/test_find.rb +37 -1
  77. data/test/scout/persist/test_open.rb +37 -0
  78. data/test/scout/persist/test_path.rb +37 -0
  79. data/test/scout/persist/test_serialize.rb +114 -0
  80. data/test/scout/resource/test_path.rb +40 -0
  81. data/test/scout/resource/test_produce.rb +62 -0
  82. data/test/scout/simple_opt/test_get.rb +11 -0
  83. data/test/scout/simple_opt/test_parse.rb +10 -0
  84. data/test/scout/simple_opt/test_setup.rb +77 -0
  85. data/test/scout/test_cmd.rb +85 -0
  86. data/test/scout/test_concurrent_stream.rb +29 -0
  87. data/test/scout/test_misc.rb +0 -7
  88. data/test/scout/test_open.rb +146 -0
  89. data/test/scout/test_path.rb +3 -1
  90. data/test/scout/test_persist.rb +83 -0
  91. data/test/scout/test_resource.rb +26 -0
  92. data/test/scout/test_workflow.rb +87 -0
  93. data/test/scout/workflow/step/test_info.rb +28 -0
  94. data/test/scout/workflow/task/test_inputs.rb +182 -0
  95. data/test/scout/workflow/test_step.rb +36 -0
  96. data/test/scout/workflow/test_task.rb +178 -0
  97. data/test/scout/workflow/test_usage.rb +26 -0
  98. data/test/scout/workflow/test_util.rb +17 -0
  99. data/test/test_helper.rb +17 -0
  100. data/test/test_scout-gear.rb +0 -0
  101. metadata +76 -3
@@ -0,0 +1,73 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'scout/open'
5
+
6
+ class TestOpenUtil < Test::Unit::TestCase
7
+ def test_read_grep
8
+ content =<<-EOF
9
+ 1
10
+ 2
11
+ 3
12
+ 4
13
+ EOF
14
+ TmpFile.with_file(content) do |file|
15
+ sum = 0
16
+ Open.read(file, :grep => '^1\|3') do |line| sum += line.to_i end
17
+ assert_equal(1 + 3, sum)
18
+ end
19
+
20
+ TmpFile.with_file(content) do |file|
21
+ sum = 0
22
+ Open.read(file, :grep => ["1","3"]) do |line| sum += line.to_i end
23
+ assert_equal(1 + 3, sum)
24
+ end
25
+ end
26
+
27
+ def test_read_grep_invert
28
+ content =<<-EOF
29
+ 1
30
+ 2
31
+ 3
32
+ 4
33
+ EOF
34
+ TmpFile.with_file(content) do |file|
35
+ sum = 0
36
+ Open.read(file, :grep => '^1\|3', :invert_grep => true) do |line| sum += line.to_i end
37
+ assert_equal(2 + 4, sum)
38
+ end
39
+
40
+ TmpFile.with_file(content) do |file|
41
+ sum = 0
42
+ Open.read(file, :grep => ["1","3"]) do |line| sum += line.to_i end
43
+ assert_equal(1 + 3, sum)
44
+ end
45
+ end
46
+
47
+ def test_ln_s
48
+ TmpFile.with_file do |directory|
49
+ Path.setup(directory)
50
+ file1 = directory.subdir1.file
51
+ file2 = directory.subdir2.file
52
+ Open.write(file1, "TEST")
53
+ Open.ln_s file1, file2
54
+ assert_equal "TEST", Open.read(file2)
55
+ Open.write(file1, "TEST2")
56
+ assert_equal "TEST2", Open.read(file2)
57
+ end
58
+ end
59
+
60
+ def test_ln_h
61
+ TmpFile.with_file do |directory|
62
+ Path.setup(directory)
63
+ file1 = directory.subdir1.file
64
+ file2 = directory.subdir2.file
65
+ Open.write(file1, "TEST")
66
+ Open.ln_s file1, file2
67
+ assert_equal "TEST", Open.read(file2)
68
+ Open.write(file1, "TEST2")
69
+ assert_equal "TEST2", Open.read(file2)
70
+ end
71
+ end
72
+ end
73
+
@@ -10,7 +10,7 @@ class TestPathFind < Test::Unit::TestCase
10
10
  assert_equal "data/some_file", path._subpath
11
11
 
12
12
  path = Path.setup("data", 'scout')
13
- assert_equal nil, path._toplevel
13
+ assert_equal "", path._toplevel
14
14
  assert_equal "data", path._subpath
15
15
  end
16
16
 
@@ -63,5 +63,41 @@ class TestPathFind < Test::Unit::TestCase
63
63
  end
64
64
  end
65
65
 
66
+ def test_located?
67
+
68
+ p = Path.setup("/tmp/foo/bar")
69
+ assert p.located?
70
+ assert_equal p, p.find
71
+
72
+ end
73
+
74
+ def test_custom
75
+ path = Path.setup("share/data/some_file", 'scout')
76
+ TmpFile.with_file do |tmpdir|
77
+ path.path_maps[:custom] = [tmpdir, '{PATH}'] * "/"
78
+ assert_equal File.join(tmpdir,"share/data/some_file"), path.find(:custom)
79
+
80
+ path.path_maps[:custom] = [tmpdir, '{TOPLEVEL}/{PKGDIR}/{SUBPATH}'] * "/"
81
+ assert_equal File.join(tmpdir,"share/scout/data/some_file"), path.find(:custom)
82
+ end
83
+ end
84
+
85
+ def test_pkgdir
86
+ path = Path.setup("share/data/some_file", 'scout')
87
+ TmpFile.with_file do |tmpdir|
88
+ path.pkgdir = 'scout_alt'
89
+ path.path_maps[:custom] = [tmpdir, '{TOPLEVEL}/{PKGDIR}/{SUBPATH}'] * "/"
90
+ assert_equal File.join(tmpdir,"share/scout_alt/data/some_file"), path.find(:custom)
91
+ end
92
+ end
93
+
94
+ def test_sub
95
+ path = Path.setup("bin/scout/find")
96
+
97
+ assert_equal "/some_dir/bin/scout_commands/find", Path.follow(path, "/some_dir/{PATH/scout/scout_commands}")
98
+ assert_equal "/some_dir/scout_commands/find", Path.follow(path, '/some_dir/{PATH/bin\/scout/scout_commands}')
99
+ end
100
+
101
+
66
102
  end
67
103
 
@@ -0,0 +1,37 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestPersistOpen < Test::Unit::TestCase
5
+
6
+ def obj
7
+ ["TEST", 2, :symbol, {"a" => [1,2], :b => 3}]
8
+ end
9
+
10
+ def test_json
11
+ obj = ["TEST", 2]
12
+ TmpFile.with_file(obj.to_json) do |tmpfile|
13
+ assert_equal obj, Open.json(tmpfile)
14
+ end
15
+ end
16
+
17
+ def test_yaml
18
+ TmpFile.with_file(obj.to_yaml) do |tmpfile|
19
+ assert_equal obj, Open.yaml(tmpfile)
20
+ end
21
+ end
22
+
23
+ def test_marshal
24
+ TmpFile.with_file(Marshal.dump(obj)) do |tmpfile|
25
+ assert_equal obj, Open.marshal(tmpfile)
26
+ end
27
+ end
28
+
29
+ def test_yaml_io
30
+ TmpFile.with_file(obj.to_yaml) do |tmpfile|
31
+ Open.open(tmpfile) do |f|
32
+ assert_equal obj, Open.yaml(f)
33
+ end
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,37 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestPersistPath < Test::Unit::TestCase
5
+ def obj
6
+ ["TEST", 2, :symbol, {"a" => [1,2], :b => 3}]
7
+ end
8
+
9
+ def test_json
10
+ obj = ["TEST", 2]
11
+ TmpFile.with_file(obj.to_json) do |tmpfile|
12
+ Path.setup(tmpfile)
13
+ assert_equal obj, tmpfile.json
14
+ end
15
+ end
16
+
17
+ def test_yaml
18
+ TmpFile.with_file(obj.to_yaml) do |tmpfile|
19
+ assert_equal obj, Open.yaml(tmpfile)
20
+ end
21
+ end
22
+
23
+ def test_marshal
24
+ TmpFile.with_file(Marshal.dump(obj)) do |tmpfile|
25
+ assert_equal obj, Open.marshal(tmpfile)
26
+ end
27
+ end
28
+
29
+ def test_yaml_io
30
+ TmpFile.with_file(obj.to_yaml) do |tmpfile|
31
+ Open.open(tmpfile) do |f|
32
+ assert_equal obj, Open.yaml(f)
33
+ end
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,114 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ class TestPersistSerialize < Test::Unit::TestCase
5
+ def test_string
6
+ TmpFile.with_file do |tmpfile|
7
+ obj = "TEST"
8
+ Persist.save(obj, tmpfile, :string)
9
+ assert_equal obj, Persist.load(tmpfile, :string)
10
+ end
11
+ end
12
+
13
+ def test_string_io
14
+ TmpFile.with_file do |tmpfile|
15
+ obj = StringIO.new("TEST")
16
+ obj.rewind
17
+ Persist.save("TEST", tmpfile, :string)
18
+ assert_equal "TEST", Persist.load(tmpfile, :string)
19
+ end
20
+ end
21
+
22
+ def test_integer
23
+ TmpFile.with_file do |tmpfile|
24
+ obj = 1
25
+ Persist.save(obj, tmpfile, :integer)
26
+ assert_equal obj, Persist.load(tmpfile, :integer)
27
+ end
28
+ end
29
+
30
+ def test_float
31
+ TmpFile.with_file do |tmpfile|
32
+ obj = 1.210202
33
+ Persist.save(obj, tmpfile, :float)
34
+ assert_equal obj, Persist.load(tmpfile, :float)
35
+ end
36
+ end
37
+
38
+ def test_array
39
+ TmpFile.with_file do |tmpfile|
40
+ obj = %w(one two)
41
+ Persist.save(obj, tmpfile, :array)
42
+ assert_equal obj, Persist.load(tmpfile, :array)
43
+ end
44
+ end
45
+
46
+ def test_integer_array
47
+ TmpFile.with_file do |tmpfile|
48
+ obj = [1, 2]
49
+ Persist.save(obj, tmpfile, :integer_array)
50
+ assert_equal obj, Persist.load(tmpfile, :integer_array)
51
+ end
52
+ end
53
+
54
+ def test_float_array
55
+ TmpFile.with_file do |tmpfile|
56
+ obj = [1.1, 2.2]
57
+ Persist.save(obj, tmpfile, :float_array)
58
+ assert_equal obj, Persist.load(tmpfile, :float_array)
59
+ end
60
+ end
61
+
62
+ def test_boolean_array
63
+ TmpFile.with_file do |tmpfile|
64
+ obj = [true, false, true]
65
+ Persist.save(obj, tmpfile, :boolean_array)
66
+ assert_equal obj, Persist.load(tmpfile, :boolean_array)
67
+ end
68
+ end
69
+
70
+ def test_path_array
71
+ TmpFile.with_file do |tmpfile|
72
+ dir = Path.setup("test/dir")
73
+ obj = [dir.foo, dir.bar]
74
+ Persist.save(obj, tmpfile, :path_array)
75
+ assert_equal obj, Persist.load(tmpfile, :path_array)
76
+ assert_equal dir.foo.find, obj.first.find
77
+ end
78
+ end
79
+
80
+ def test_path_array_hash
81
+ TmpFile.with_file do |tmpfile|
82
+ dir = Path.setup("test/dir")
83
+ obj = [dir.foo, dir.bar]
84
+ hash = {}
85
+ Persist.save(obj, tmpfile, hash)
86
+ assert_equal obj, Persist.load(tmpfile, hash)
87
+ assert_equal dir.foo.find, obj.first.find
88
+ end
89
+ end
90
+
91
+ def test_relative_path
92
+ TmpFile.with_file do |dir|
93
+ Path.setup(dir)
94
+ file = dir.subdir.file
95
+ Open.write(file, "TEST")
96
+ Persist.save('./subdir/file', dir.file, :file)
97
+ assert_equal 'TEST', Open.read(Persist.load(dir.file, :file))
98
+ end
99
+ end
100
+
101
+ def test_relative_file_array
102
+ TmpFile.with_file do |dir|
103
+ Path.setup(dir)
104
+ file1 = dir.subdir1.file
105
+ Open.write(file1, "TEST1")
106
+ file2 = dir.subdir2.file
107
+ Open.write(file2, "TEST2")
108
+ Persist.save(["./subdir1/file", "./subdir2/file"], dir.file, :file_array)
109
+ assert_equal 'TEST1', Open.read(Persist.load(dir.file, :file_array)[0])
110
+ assert_equal 'TEST2', Open.read(Persist.load(dir.file, :file_array)[1])
111
+ end
112
+ end
113
+ end
114
+
@@ -0,0 +1,40 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+ require 'scout/resource'
4
+
5
+ class TestResourcePath < Test::Unit::TestCase
6
+ module TestResource
7
+ extend Resource
8
+
9
+ self.subdir = Path.setup('tmp/test-resource_alt')
10
+
11
+ claim self.tmp.test.string, :string, "TEST"
12
+ end
13
+
14
+ def teardown
15
+ FileUtils.rm_rf TestResource.root.find
16
+ end
17
+
18
+ def test_read
19
+ assert_include TestResource.tmp.test.string.read, "TEST"
20
+ end
21
+
22
+ def test_open
23
+ str = ""
24
+ TestResource.tmp.test.string.open do |f|
25
+ str = f.read
26
+ end
27
+ assert_include str, "TEST"
28
+ end
29
+
30
+ def test_write
31
+ TmpFile.with_file do |tmpfile|
32
+ Path.setup(tmpfile)
33
+ tmpfile.foo.bar.write do |f|
34
+ f.puts "TEST"
35
+ end
36
+ assert_include tmpfile.foo.bar.read, "TEST"
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,62 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'../resource')
4
+
5
+ class TestResourceUnit < Test::Unit::TestCase
6
+ module TestResource
7
+ extend Resource
8
+
9
+ self.subdir = Path.setup('tmp/test-resource')
10
+
11
+ claim self.tmp.test.google, :url, "http://google.com"
12
+ claim self.tmp.test.string, :string, "TEST"
13
+ claim self.tmp.test.proc, :proc do
14
+ "PROC TEST"
15
+ end
16
+
17
+ claim self.tmp.test.rakefiles.Rakefile , :string , <<-EOF
18
+ file('foo') do |t|
19
+ Open.write(t.name, "FOO")
20
+ end
21
+
22
+ rule(/.*/) do |t|
23
+ Open.write(t.name, "OTHER")
24
+ end
25
+ EOF
26
+
27
+ claim self.tmp.test.work.footest, :rake, TestResource.tmp.test.rakefiles.Rakefile
28
+
29
+ claim self.tmp.test.work.file_proc, :file_proc do |file,filename|
30
+ Open.write(filename, file)
31
+ nil
32
+ end
33
+ end
34
+
35
+ def teardown
36
+ FileUtils.rm_rf TestResource.root.find
37
+ end
38
+
39
+ def test_proc
40
+ TestResource.produce TestResource.tmp.test.proc
41
+ assert_include File.open(TestResource.tmp.test.proc.find).read, "PROC TEST"
42
+ end
43
+
44
+ def test_string
45
+ TestResource.produce TestResource.tmp.test.string
46
+ assert_include File.open(TestResource.tmp.test.string.find).read, "TEST"
47
+ end
48
+
49
+ def test_url
50
+ TestResource.produce TestResource.tmp.test.google
51
+ assert_include File.open(TestResource.tmp.test.google.find).read, "html"
52
+ end
53
+
54
+ def test_rake
55
+ TestResource.produce TestResource.tmp.test.work.footest.foo
56
+ TestResource.produce TestResource.tmp.test.work.footest.bar
57
+ TestResource.produce TestResource.tmp.test.work.footest.foo_bar
58
+ assert_include File.open(TestResource.tmp.test.work.footest.foo.find).read, "FOO"
59
+ assert_include File.open(TestResource.tmp.test.work.footest.bar.find).read, "OTHER"
60
+ assert_include File.open(TestResource.tmp.test.work.footest.foo_bar.find).read, "OTHER"
61
+ end
62
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require 'scout/simple_opt'
3
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
4
+
5
+ class TestSOPTParse < Test::Unit::TestCase
6
+ def test_consume
7
+ SOPT.parse("-f--first* first arg:-f--fun")
8
+ args = "-f myfile --fun".split(" ")
9
+ assert_equal "myfile", SOPT.consume(args)[:first]
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require 'scout/path'
3
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
4
+
5
+ class TestSOPTParse < Test::Unit::TestCase
6
+ def test_parse
7
+ SOPT.parse("-f--first* first arg:-f--fun")
8
+ assert_equal "fun", SOPT.shortcuts["fu"]
9
+ end
10
+ end
@@ -0,0 +1,77 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require 'scout/simple_opt'
3
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
4
+
5
+ class TestSOPTSetup < Test::Unit::TestCase
6
+ def setup
7
+ SOPT.inputs = nil
8
+ SOPT.input_types = nil
9
+ SOPT.input_descriptions = nil
10
+ SOPT.input_shortcuts = nil
11
+ end
12
+
13
+ def test_setup
14
+ SOPT.setup <<-EOF
15
+ Test application
16
+
17
+ $ test cmd -arg 1
18
+
19
+ It does some imaginary stuff
20
+
21
+ -a--arg* Argument
22
+ -a2--arg2* Argument
23
+
24
+ EOF
25
+
26
+ assert_equal "test cmd -arg 1", SOPT.synopsys
27
+ assert SOPT.inputs.include? "arg"
28
+ assert SOPT.inputs.include? "arg2"
29
+ end
30
+
31
+ def test_setup_alt
32
+ SOPT.setup <<-EOF
33
+ Test application
34
+
35
+ It does some imaginary stuff
36
+
37
+ -a--arg* Argument
38
+ -a2--arg2* Argument
39
+
40
+ EOF
41
+
42
+ assert SOPT.inputs.include? "arg"
43
+ assert SOPT.inputs.include? "arg2"
44
+ end
45
+
46
+ def test_setup_alt2
47
+ SOPT.setup <<-EOF
48
+ Test application
49
+
50
+ -a--arg* Argument
51
+ -a2--arg2* Argument
52
+
53
+ EOF
54
+
55
+ assert SOPT.inputs.include? "arg"
56
+ assert SOPT.inputs.include? "arg2"
57
+ end
58
+
59
+ def test_setup_alt3
60
+ SOPT.setup <<-EOF
61
+ Pulls the values from a tsv colum
62
+
63
+ $ rbbt tsv values [options] <filename.tsv|->
64
+
65
+ Use - to read from STDIN
66
+
67
+ -tch--tokyocabinet File is a tokyocabinet hash database
68
+ -tcb--tokyocabinet_bd File is a tokyocabinet B database
69
+ -h--help Print this help
70
+ EOF
71
+
72
+ assert SOPT.inputs.include? "tokyocabinet"
73
+ end
74
+
75
+ end
76
+
77
+
@@ -0,0 +1,85 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'scout/open'
5
+
6
+ class TestCmd < Test::Unit::TestCase
7
+
8
+ def test_cmd_option_string
9
+ assert_equal("--user-agent 'firefox'", CMD.process_cmd_options("--user-agent" => "firefox"))
10
+ assert_equal("--user-agent='firefox'", CMD.process_cmd_options("--user-agent=" => "firefox"))
11
+ assert_equal("-q", CMD.process_cmd_options("-q" => true))
12
+ assert_equal("", CMD.process_cmd_options("-q" => nil))
13
+ assert_equal("", CMD.process_cmd_options("-q" => false))
14
+
15
+ assert(CMD.process_cmd_options("--user-agent" => "firefox", "-q" => true) =~ /--user-agent 'firefox'/)
16
+ assert(CMD.process_cmd_options("--user-agent" => "firefox", "-q" => true) =~ /-q/)
17
+ end
18
+
19
+ def test_cmd
20
+ assert_equal("test\n", CMD.cmd("echo '{opt}' test").read)
21
+ assert_equal("test", CMD.cmd("echo '{opt}' test", "-n" => true).read)
22
+ assert_equal("test2\n", CMD.cmd("cut", "-f" => 2, "-d" => ' ', :in => "test1 test2").read)
23
+ end
24
+
25
+ def test_pipe
26
+ assert_equal("test\n", CMD.cmd("echo test", :pipe => true).read)
27
+ assert_equal("test\n", CMD.cmd("echo '{opt}' test", :pipe => true).read)
28
+ assert_equal("test", CMD.cmd("echo '{opt}' test", "-n" => true, :pipe => true).read)
29
+ assert_equal("test2\n", CMD.cmd("cut", "-f" => 2, "-d" => ' ', :in => "test1 test2", :pipe => true).read)
30
+ end
31
+
32
+ def test_error
33
+ Log.with_severity 6 do
34
+ assert_raise ProcessFailed do CMD.cmd('fake-command') end
35
+ assert_raise ProcessFailed do CMD.cmd('ls -fake_option') end
36
+
37
+ assert_raise ProcessFailed do CMD.cmd('fake-command', :stderr => true) end
38
+ assert_raise ProcessFailed do CMD.cmd('ls -fake_option', :stderr => true) end
39
+
40
+ assert_nothing_raised ProcessFailed do CMD.cmd('fake-command', :no_fail => true, :pipe => true) end
41
+ assert_nothing_raised ProcessFailed do CMD.cmd('ls -fake_option', :no_fail => true, :pipe => true) end
42
+
43
+ assert_raise ProcessFailed do CMD.cmd('fake-command', :stderr => true, :pipe => true).join end
44
+ assert_raise ConcurrentStreamProcessFailed do CMD.cmd('ls -fake_option', :stderr => true, :pipe => true).join end
45
+ end
46
+ end
47
+
48
+ def test_pipes
49
+ text = <<-EOF
50
+ line1
51
+ line2
52
+ line3
53
+ line11
54
+ line22
55
+ line33
56
+ EOF
57
+
58
+ TmpFile.with_file(text * 100) do |file|
59
+
60
+ Open.open(file) do |f|
61
+ io = CMD.cmd('tail -n 10', :in => f, :pipe => true)
62
+ io2 = CMD.cmd('head -n 10', :in => io, :pipe => true)
63
+ io3 = CMD.cmd('head -n 10', :in => io2, :pipe => true)
64
+ assert_equal 10, io3.read.split(/\n/).length
65
+ end
66
+ end
67
+ end
68
+
69
+ def test_STDIN_close
70
+ TmpFile.with_file("Hello") do |file|
71
+ STDIN.close
72
+ Open.open(file) do |f|
73
+ io = CMD.cmd("tr 'e' 'E'", :in => f, :pipe => true)
74
+ txt = io.read
75
+ io.join
76
+ assert_equal "HEllo", txt
77
+ end
78
+ end
79
+ end
80
+
81
+ def test_bash
82
+ assert_equal "TEST", CMD.bash("echo TEST").read.strip
83
+ assert_equal ENV["HOME"], CMD.bash("echo $HOME").read.strip
84
+ end
85
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'scout/exceptions'
5
+ require 'scout/cmd'
6
+
7
+ class TestClass < Test::Unit::TestCase
8
+ def test_concurrent_stream_pipe
9
+ io = CMD.cmd("ls", :pipe => true, :autojoin => true)
10
+ io.read
11
+ io.close
12
+ end
13
+
14
+ def test_concurrent_stream_process_failed
15
+ assert_raise ConcurrentStreamProcessFailed do
16
+ io = CMD.cmd("grep . NONEXISTINGFILE", :pipe => true, :autojoin => true)
17
+ io.read
18
+ io.close
19
+ end
20
+ end
21
+
22
+ def test_concurrent_stream_process_failed_autojoin
23
+ assert_raise ConcurrentStreamProcessFailed do
24
+ io = CMD.cmd("grep . NONEXISTINGFILE", :pipe => true, :autojoin => true)
25
+ io.read
26
+ end
27
+ end
28
+ end
29
+
@@ -2,12 +2,5 @@ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
2
  require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
3
 
4
4
  class TestMisc < Test::Unit::TestCase
5
- def test_in_dir
6
- TmpFile.with_file do |tmpdir|
7
- Misc.in_dir tmpdir do
8
- assert_equal tmpdir, FileUtils.pwd
9
- end
10
- end
11
- end
12
5
  end
13
6