scout-essentials 1.0.0
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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.vimproject +78 -0
- data/Gemfile +14 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +18 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/lib/scout/cmd.rb +348 -0
- data/lib/scout/concurrent_stream.rb +284 -0
- data/lib/scout/config.rb +168 -0
- data/lib/scout/exceptions.rb +77 -0
- data/lib/scout/indiferent_hash/case_insensitive.rb +30 -0
- data/lib/scout/indiferent_hash/options.rb +115 -0
- data/lib/scout/indiferent_hash.rb +96 -0
- data/lib/scout/log/color.rb +224 -0
- data/lib/scout/log/color_class.rb +269 -0
- data/lib/scout/log/fingerprint.rb +69 -0
- data/lib/scout/log/progress/report.rb +244 -0
- data/lib/scout/log/progress/util.rb +173 -0
- data/lib/scout/log/progress.rb +106 -0
- data/lib/scout/log/trap.rb +107 -0
- data/lib/scout/log.rb +441 -0
- data/lib/scout/meta_extension.rb +100 -0
- data/lib/scout/misc/digest.rb +63 -0
- data/lib/scout/misc/filesystem.rb +25 -0
- data/lib/scout/misc/format.rb +255 -0
- data/lib/scout/misc/helper.rb +31 -0
- data/lib/scout/misc/insist.rb +56 -0
- data/lib/scout/misc/monitor.rb +66 -0
- data/lib/scout/misc/system.rb +73 -0
- data/lib/scout/misc.rb +10 -0
- data/lib/scout/named_array.rb +138 -0
- data/lib/scout/open/lock/lockfile.rb +587 -0
- data/lib/scout/open/lock.rb +68 -0
- data/lib/scout/open/remote.rb +135 -0
- data/lib/scout/open/stream.rb +491 -0
- data/lib/scout/open/util.rb +244 -0
- data/lib/scout/open.rb +170 -0
- data/lib/scout/path/find.rb +204 -0
- data/lib/scout/path/tmpfile.rb +8 -0
- data/lib/scout/path/util.rb +127 -0
- data/lib/scout/path.rb +51 -0
- data/lib/scout/persist/open.rb +17 -0
- data/lib/scout/persist/path.rb +15 -0
- data/lib/scout/persist/serialize.rb +157 -0
- data/lib/scout/persist.rb +104 -0
- data/lib/scout/resource/open.rb +8 -0
- data/lib/scout/resource/path.rb +80 -0
- data/lib/scout/resource/produce/rake.rb +69 -0
- data/lib/scout/resource/produce.rb +151 -0
- data/lib/scout/resource/scout.rb +3 -0
- data/lib/scout/resource/software.rb +178 -0
- data/lib/scout/resource/util.rb +59 -0
- data/lib/scout/resource.rb +40 -0
- data/lib/scout/simple_opt/accessor.rb +54 -0
- data/lib/scout/simple_opt/doc.rb +126 -0
- data/lib/scout/simple_opt/get.rb +57 -0
- data/lib/scout/simple_opt/parse.rb +67 -0
- data/lib/scout/simple_opt/setup.rb +26 -0
- data/lib/scout/simple_opt.rb +5 -0
- data/lib/scout/tmpfile.rb +129 -0
- data/lib/scout-essentials.rb +10 -0
- data/scout-essentials.gemspec +143 -0
- data/share/color/color_names +507 -0
- data/share/color/diverging_colors.hex +12 -0
- data/share/software/install_helpers +523 -0
- data/test/scout/indiferent_hash/test_case_insensitive.rb +16 -0
- data/test/scout/indiferent_hash/test_options.rb +46 -0
- data/test/scout/log/test_color.rb +0 -0
- data/test/scout/log/test_progress.rb +108 -0
- data/test/scout/misc/test_digest.rb +30 -0
- data/test/scout/misc/test_filesystem.rb +30 -0
- data/test/scout/misc/test_insist.rb +13 -0
- data/test/scout/misc/test_system.rb +21 -0
- data/test/scout/open/test_lock.rb +52 -0
- data/test/scout/open/test_remote.rb +25 -0
- data/test/scout/open/test_stream.rb +676 -0
- data/test/scout/open/test_util.rb +73 -0
- data/test/scout/path/test_find.rb +110 -0
- data/test/scout/path/test_util.rb +22 -0
- data/test/scout/persist/test_open.rb +37 -0
- data/test/scout/persist/test_path.rb +37 -0
- data/test/scout/persist/test_serialize.rb +114 -0
- data/test/scout/resource/test_path.rb +58 -0
- data/test/scout/resource/test_produce.rb +94 -0
- data/test/scout/resource/test_software.rb +24 -0
- data/test/scout/resource/test_util.rb +38 -0
- data/test/scout/simple_opt/test_doc.rb +16 -0
- data/test/scout/simple_opt/test_get.rb +11 -0
- data/test/scout/simple_opt/test_parse.rb +10 -0
- data/test/scout/simple_opt/test_setup.rb +77 -0
- data/test/scout/test_cmd.rb +85 -0
- data/test/scout/test_concurrent_stream.rb +29 -0
- data/test/scout/test_config.rb +66 -0
- data/test/scout/test_indiferent_hash.rb +26 -0
- data/test/scout/test_log.rb +32 -0
- data/test/scout/test_meta_extension.rb +80 -0
- data/test/scout/test_misc.rb +6 -0
- data/test/scout/test_named_array.rb +43 -0
- data/test/scout/test_open.rb +146 -0
- data/test/scout/test_path.rb +54 -0
- data/test/scout/test_persist.rb +186 -0
- data/test/scout/test_resource.rb +26 -0
- data/test/scout/test_tmpfile.rb +53 -0
- data/test/test_helper.rb +50 -0
- metadata +247 -0
@@ -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
|
+
|
@@ -0,0 +1,66 @@
|
|
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 TestConfig < Test::Unit::TestCase
|
5
|
+
setup do
|
6
|
+
Scout::Config.set({:cpus => 30}, :test_config, :test)
|
7
|
+
Scout::Config.set(:cpus, 5, "slow::2", :test)
|
8
|
+
Scout::Config.set({:token => "token"}, "token")
|
9
|
+
Scout::Config.set(:notoken, "no_token")
|
10
|
+
Scout::Config.set({:emptytoken => "empty"})
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_simple
|
14
|
+
assert_equal 30, Scout::Config.get(:cpus, :test_config)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_match
|
18
|
+
assert_equal({20 => ["token"]}, Scout::Config.match({["key:token"] => "token"}, "key:token"))
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_simple_no_token
|
22
|
+
assert_equal "token", Scout::Config.get("token", "token")
|
23
|
+
assert_equal "no_token", Scout::Config.get("notoken", "key:notoken")
|
24
|
+
assert_equal 'token', Scout::Config.get("token", "key:token")
|
25
|
+
assert_equal 'token', Scout::Config.get("token")
|
26
|
+
assert_equal nil, Scout::Config.get("token", "someotherthing")
|
27
|
+
assert_equal "default_token", Scout::Config.get("token", 'unknown', :default => 'default_token')
|
28
|
+
assert_equal 'empty', Scout::Config.get("emptytoken", 'key:emptytoken')
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_prio
|
32
|
+
assert_equal 5, Scout::Config.get(:cpus, :slow, :test)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_with_config
|
36
|
+
Scout::Config.add_entry 'key', 'valueA', 'token'
|
37
|
+
assert_equal "valueA", Scout::Config.get('key', 'token')
|
38
|
+
assert_equal "default", Scout::Config.get('key2', 'token', :default => 'default')
|
39
|
+
|
40
|
+
Scout::Config.with_config do
|
41
|
+
Scout::Config.add_entry 'key', 'valueB', 'token'
|
42
|
+
Scout::Config.add_entry 'key2', 'valueB2', 'token'
|
43
|
+
assert_equal "valueB", Scout::Config.get('key', 'token')
|
44
|
+
assert_equal "valueB2", Scout::Config.get('key2', 'token', :default => 'default')
|
45
|
+
end
|
46
|
+
|
47
|
+
assert_equal "valueA", Scout::Config.get('key', 'token')
|
48
|
+
assert_equal "default", Scout::Config.get('key2', 'token', :default => 'default')
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_order
|
52
|
+
Scout::Config.add_entry 'key', 'V1', 'token1'
|
53
|
+
Scout::Config.add_entry 'key', 'V2', 'token2'
|
54
|
+
Scout::Config.add_entry 'key', 'V3', 'token2'
|
55
|
+
|
56
|
+
assert_equal "V3", Scout::Config.get('key', 'token2')
|
57
|
+
assert_equal "V1", Scout::Config.get('key', 'token1')
|
58
|
+
assert_equal "V3", Scout::Config.get('key', 'token2', 'token1')
|
59
|
+
assert_equal "V1", Scout::Config.get('key', 'token1', 'token2')
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_default
|
63
|
+
Scout::Config.add_entry 'key', 'V1', 'token1'
|
64
|
+
assert_equal "V3", Scout::Config.get('key', 'token2', :default => 'V3')
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,26 @@
|
|
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 TestClass < Test::Unit::TestCase
|
5
|
+
def test_indiferent_hash
|
6
|
+
a = {:a => 1, "b" => 2}
|
7
|
+
a.extend IndiferentHash
|
8
|
+
|
9
|
+
assert_equal 1, a[:a]
|
10
|
+
assert_equal 1, a["a"]
|
11
|
+
assert_equal 2, a["b"]
|
12
|
+
assert_equal 2, a[:b]
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_case_insensitive_hash
|
16
|
+
a = {:a => 1, "b" => 2}
|
17
|
+
a.extend CaseInsensitiveHash
|
18
|
+
|
19
|
+
assert_equal 1, a[:a]
|
20
|
+
assert_equal 1, a["A"]
|
21
|
+
assert_equal 1, a[:A]
|
22
|
+
assert_equal 2, a["B"]
|
23
|
+
assert_equal 2, a[:b]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,32 @@
|
|
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 TestLog < Test::Unit::TestCase
|
5
|
+
def test_get_level
|
6
|
+
assert_equal 0, Log.get_level(:debug)
|
7
|
+
assert_equal 1, Log.get_level(:low)
|
8
|
+
assert_equal 1, Log.get_level("LOW")
|
9
|
+
assert_equal 1, Log.get_level(1)
|
10
|
+
assert_equal 0, Log.get_level(nil)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_color
|
14
|
+
assert Log.color(:green, "green")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_iif
|
18
|
+
TmpFile.with_file do |tmp|
|
19
|
+
Log.logfile(tmp)
|
20
|
+
iif :foo
|
21
|
+
assert File.read(tmp).include? ":foo"
|
22
|
+
assert File.read(tmp).include? "INFO"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_tty_size
|
27
|
+
assert Integer === Log.tty_size
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,80 @@
|
|
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 TestMetaExtension < Test::Unit::TestCase
|
5
|
+
module ExtensionClass
|
6
|
+
extend MetaExtension
|
7
|
+
|
8
|
+
extension_attr :code, :code2
|
9
|
+
end
|
10
|
+
|
11
|
+
module ExtensionClass2
|
12
|
+
extend MetaExtension
|
13
|
+
|
14
|
+
extension_attr :code3, :code4
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_setup_annotate
|
19
|
+
str = "String"
|
20
|
+
ExtensionClass.setup(str, :code)
|
21
|
+
assert ExtensionClass === str
|
22
|
+
assert_equal :code, str.code
|
23
|
+
|
24
|
+
str2 = "String2"
|
25
|
+
str.annotate(str2)
|
26
|
+
assert_equal :code, str2.code
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_marshal
|
30
|
+
str = "String"
|
31
|
+
ExtensionClass.setup(str, :code)
|
32
|
+
assert ExtensionClass === str
|
33
|
+
assert_equal :code, str.code
|
34
|
+
|
35
|
+
str2 = Marshal.load(Marshal.dump(str))
|
36
|
+
assert_equal :code, str2.code
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_setup_alternatives
|
40
|
+
str = "String"
|
41
|
+
|
42
|
+
ExtensionClass.setup(str, :code2 => :code)
|
43
|
+
assert_equal :code, str.code2
|
44
|
+
|
45
|
+
ExtensionClass.setup(str, code2: :code)
|
46
|
+
assert_equal :code, str.code2
|
47
|
+
|
48
|
+
ExtensionClass.setup(str, "code2" => :code)
|
49
|
+
assert_equal :code, str.code2
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_setup_block
|
54
|
+
o = ExtensionClass.setup nil, :code => :c, :code2 => :c2 do
|
55
|
+
puts 1
|
56
|
+
end
|
57
|
+
|
58
|
+
assert o.extension_attr_hash.include?(:code)
|
59
|
+
assert o.extension_attr_hash.include?(:code2)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_twice
|
63
|
+
str = "String"
|
64
|
+
|
65
|
+
ExtensionClass.setup(str, :code2 => :code)
|
66
|
+
assert_equal :code, str.code2
|
67
|
+
assert_include str.instance_variable_get(:@extension_attrs), :code
|
68
|
+
|
69
|
+
str.extend ExtensionClass2
|
70
|
+
str.code3 = :code_alt
|
71
|
+
assert_equal :code, str.code2
|
72
|
+
assert_equal :code_alt, str.code3
|
73
|
+
assert_include str.instance_variable_get(:@extension_attrs), :code
|
74
|
+
assert_include str.instance_variable_get(:@extension_attrs), :code3
|
75
|
+
|
76
|
+
assert_include str.extension_attr_hash, :code
|
77
|
+
assert_include str.extension_attr_hash, :code3
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,43 @@
|
|
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 TestNamedArray < Test::Unit::TestCase
|
5
|
+
def test_identify_names
|
6
|
+
names =<<-EOF.split("\n")
|
7
|
+
ValueA
|
8
|
+
ValueB (Entity type)
|
9
|
+
15
|
10
|
+
EOF
|
11
|
+
assert_equal 0, NamedArray.identify_name(names, "ValueA")
|
12
|
+
assert_equal :key, NamedArray.identify_name(names, :key)
|
13
|
+
assert_equal 0, NamedArray.identify_name(names, nil)
|
14
|
+
assert_equal 1, NamedArray.identify_name(names, "ValueB (Entity type)")
|
15
|
+
assert_equal 1, NamedArray.identify_name(names, "ValueB")
|
16
|
+
assert_equal 1, NamedArray.identify_name(names, 1)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_missing_field
|
20
|
+
a = NamedArray.setup([1,2], [:a, :b])
|
21
|
+
assert_equal 1, a[:a]
|
22
|
+
assert_equal nil, a[:c]
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_zip_fields
|
26
|
+
a = [%w(a b), %w(1 1)]
|
27
|
+
assert_equal [%w(a 1), %w(b 1)], NamedArray.zip_fields(a)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_add_zipped
|
31
|
+
a = [%w(a b), %w(1 1)]
|
32
|
+
NamedArray.add_zipped a, [%w(c), %w(1)]
|
33
|
+
NamedArray.add_zipped a, [%w(d), %w(1)]
|
34
|
+
assert_equal [%w(a b c d), %w(1 1 1 1)], a
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_method_missing
|
38
|
+
a = NamedArray.setup([1,2], [:a, :b])
|
39
|
+
assert_equal 1, a.a
|
40
|
+
assert_equal 2, a.b
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,146 @@
|
|
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 TestOpen < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_read
|
7
|
+
content =<<-EOF
|
8
|
+
1
|
9
|
+
2
|
10
|
+
3
|
11
|
+
4
|
12
|
+
EOF
|
13
|
+
TmpFile.with_file(content) do |file|
|
14
|
+
sum = 0
|
15
|
+
Open.read file do |line| sum += line.to_i end
|
16
|
+
assert_equal(1 + 2 + 3 + 4, sum)
|
17
|
+
assert_equal(content, Open.read(file))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_gzip
|
22
|
+
content =<<-EOF
|
23
|
+
1
|
24
|
+
2
|
25
|
+
3
|
26
|
+
4
|
27
|
+
EOF
|
28
|
+
TmpFile.with_file(content) do |file|
|
29
|
+
`gzip #{file}`
|
30
|
+
assert_equal(content, Open.read(file + '.gz'))
|
31
|
+
FileUtils.rm file + '.gz'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
#def test_wget
|
38
|
+
# assert(Misc.fixutf8(Open.wget('http://google.com', :quiet => true).read) =~ /html/)
|
39
|
+
#end
|
40
|
+
|
41
|
+
#def test_nice
|
42
|
+
# nice = 0.5
|
43
|
+
|
44
|
+
# t = Time.now
|
45
|
+
# Open.wget('http://google.com', :quiet => true, :nice => nice).read
|
46
|
+
# assert(Time.now - t + 0.5 >= nice)
|
47
|
+
|
48
|
+
# Open.wget('http://google.com', :quiet => true, :nice => nice, :nice_key => 1).read
|
49
|
+
# t = Time.now
|
50
|
+
# Open.wget('http://google.com', :quiet => true, :nice => nice, :nice_key => 1).read
|
51
|
+
# assert(Time.now - t + 0.5 >= nice)
|
52
|
+
#end
|
53
|
+
|
54
|
+
#def test_remote?
|
55
|
+
# assert(Open.remote?('http://google.com'))
|
56
|
+
# assert(! Open.remote?('~/.bashrc'))
|
57
|
+
#end
|
58
|
+
|
59
|
+
#def test_open
|
60
|
+
# assert(Open.read('http://google.com', :quiet => true, :nocache => :update) =~ /html/)
|
61
|
+
#end
|
62
|
+
|
63
|
+
#def test_repo_dir
|
64
|
+
# file1 = "TEST"
|
65
|
+
# file2 = "TEST" * 1000
|
66
|
+
# TmpFile.with_file do |tmpdir|
|
67
|
+
# tmpdir = Rbbt.tmp.repo_dir.find
|
68
|
+
# normal = File.join(tmpdir, 'normal')
|
69
|
+
# repo = File.join(tmpdir, 'repo')
|
70
|
+
|
71
|
+
# Open.repository_dirs.push(repo)
|
72
|
+
|
73
|
+
# Misc.benchmark(100) do
|
74
|
+
# filename = "file" << (rand * 100).to_i.to_s
|
75
|
+
# Open.write(File.join(normal, filename), file2)
|
76
|
+
# 100.times do
|
77
|
+
# Open.read(File.join(normal, filename))
|
78
|
+
# end
|
79
|
+
# end
|
80
|
+
|
81
|
+
# Misc.benchmark(100) do
|
82
|
+
# filename = "file" << (rand * 100).to_i.to_s
|
83
|
+
# Open.write(File.join(repo, filename), file2)
|
84
|
+
# 100.times do
|
85
|
+
# Open.read(File.join(repo, filename))
|
86
|
+
# end
|
87
|
+
# end
|
88
|
+
# end
|
89
|
+
#end
|
90
|
+
#
|
91
|
+
#def test_repo_dir2
|
92
|
+
# TmpFile.with_file do |tmpdir|
|
93
|
+
# tmpdir = Rbbt.tmp.repo_dir.find
|
94
|
+
# repo = File.join(tmpdir, 'repo')
|
95
|
+
|
96
|
+
# Open.repository_dirs.push(repo)
|
97
|
+
|
98
|
+
# obj = { :a => "???a"}
|
99
|
+
# filename = "file" << (rand * 100).to_i.to_s
|
100
|
+
# Open.write(File.join(repo, filename), Marshal.dump(obj))
|
101
|
+
# dump = Open.read(File.join(repo, filename))
|
102
|
+
# obj_cp = Marshal.load(dump)
|
103
|
+
# assert_equal obj, obj_cp
|
104
|
+
# end
|
105
|
+
#end
|
106
|
+
|
107
|
+
#def test_repo_marshal
|
108
|
+
# TmpFile.with_file do |tmpdir|
|
109
|
+
# tmpdir = Rbbt.tmp.repo_dir.find
|
110
|
+
# repo = File.join(tmpdir, 'repo')
|
111
|
+
|
112
|
+
# filename = 'file'
|
113
|
+
# Open.repository_dirs.push(repo)
|
114
|
+
|
115
|
+
# obj = {:a => "string", :pid => nil, :num => 1000, :p => Rbbt.tmp.foo}
|
116
|
+
# Open.write(File.join(repo, filename), Marshal.dump(obj))
|
117
|
+
# new =Open.open(File.join(repo, filename)) do |f|
|
118
|
+
# Marshal.load(f)
|
119
|
+
# end
|
120
|
+
|
121
|
+
# assert_equal new, obj
|
122
|
+
# end
|
123
|
+
|
124
|
+
#end
|
125
|
+
|
126
|
+
#def test_write_stream_repo
|
127
|
+
# TmpFile.with_file do |tmpdir|
|
128
|
+
# tmpdir = Rbbt.tmp.repo_dir.find
|
129
|
+
# repo = File.join(tmpdir, 'repo')
|
130
|
+
|
131
|
+
# file = File.join(repo, 'file')
|
132
|
+
# Open.repository_dirs.push(repo)
|
133
|
+
|
134
|
+
# text = (["text"] * 5) * "\n"
|
135
|
+
|
136
|
+
# Misc.consume_stream(StringIO.new(text), false, file)
|
137
|
+
|
138
|
+
# assert_equal text, Open.read(file)
|
139
|
+
# assert !File.exist?(file)
|
140
|
+
# assert Open.exists? file
|
141
|
+
# end
|
142
|
+
|
143
|
+
#end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
@@ -0,0 +1,54 @@
|
|
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 TestPath < Test::Unit::TestCase
|
5
|
+
def test_join
|
6
|
+
path = '/tmp'
|
7
|
+
path.extend Path
|
8
|
+
assert_equal '/tmp/foo', path.join(:foo)
|
9
|
+
assert_equal '/tmp/foo/bar', path.join(:bar, :foo)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_get
|
13
|
+
path = '/tmp'
|
14
|
+
path.extend Path
|
15
|
+
assert_equal '/tmp/foo', path[:foo]
|
16
|
+
assert_equal '/tmp/foo/bar', path.foo[:bar]
|
17
|
+
assert_equal '/tmp/foo/bar', path[:bar, :foo]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_slash
|
21
|
+
path = '/tmp'
|
22
|
+
path.extend Path
|
23
|
+
assert_equal '/tmp/foo', path/:foo
|
24
|
+
assert_equal '/tmp/foo/bar', path/:foo/:bar
|
25
|
+
assert_equal '/tmp/foo/bar', path.foo/:bar
|
26
|
+
assert_equal '/tmp/foo/bar', path./(:bar, :foo)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_setup
|
30
|
+
path = 'tmp'
|
31
|
+
Path.setup(path)
|
32
|
+
assert_equal 'scout', path.pkgdir
|
33
|
+
assert path.libdir.end_with?("scout-essentials")
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_lib_dir
|
37
|
+
TmpFile.with_file do |tmpdir|
|
38
|
+
Path.setup tmpdir
|
39
|
+
FileUtils.mkdir_p tmpdir.lib
|
40
|
+
lib_path = File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
|
41
|
+
lib_path = File.join(Path.caller_lib_dir, 'lib', lib_path)
|
42
|
+
File.write tmpdir.lib.file, <<-EOR
|
43
|
+
require '#{lib_path}'
|
44
|
+
a = "1"
|
45
|
+
Path.setup(a)
|
46
|
+
print a.libdir
|
47
|
+
EOR
|
48
|
+
Misc.in_dir tmpdir.tmp do
|
49
|
+
assert_equal tmpdir, `ruby #{tmpdir.lib.file}`
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|