rbbt-util 1.0.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.
- data/LICENSE +20 -0
- data/bin/tchash.rb +15 -0
- data/bin/tsv.rb +14 -0
- data/lib/rbbt/util/cachehelper.rb +100 -0
- data/lib/rbbt/util/cmd.rb +140 -0
- data/lib/rbbt/util/data_module.rb +81 -0
- data/lib/rbbt/util/excel2tsv.rb +32 -0
- data/lib/rbbt/util/filecache.rb +58 -0
- data/lib/rbbt/util/log.rb +50 -0
- data/lib/rbbt/util/misc.rb +158 -0
- data/lib/rbbt/util/open.rb +200 -0
- data/lib/rbbt/util/pkg_config.rb +78 -0
- data/lib/rbbt/util/pkg_data.rb +110 -0
- data/lib/rbbt/util/pkg_software.rb +130 -0
- data/lib/rbbt/util/simpleDSL.rb +92 -0
- data/lib/rbbt/util/simpleopt.rb +56 -0
- data/lib/rbbt/util/tc_hash.rb +124 -0
- data/lib/rbbt/util/tmpfile.rb +42 -0
- data/lib/rbbt/util/tsv.rb +804 -0
- data/lib/rbbt-util.rb +13 -0
- data/lib/rbbt.rb +15 -0
- data/share/install/software/lib/install_helpers +257 -0
- data/test/rbbt/util/test_cmd.rb +30 -0
- data/test/rbbt/util/test_data_module.rb +45 -0
- data/test/rbbt/util/test_excel2tsv.rb +10 -0
- data/test/rbbt/util/test_filecache.rb +36 -0
- data/test/rbbt/util/test_misc.rb +22 -0
- data/test/rbbt/util/test_open.rb +89 -0
- data/test/rbbt/util/test_simpleDSL.rb +55 -0
- data/test/rbbt/util/test_simpleopt.rb +10 -0
- data/test/rbbt/util/test_tc_hash.rb +18 -0
- data/test/rbbt/util/test_tmpfile.rb +20 -0
- data/test/rbbt/util/test_tsv.rb +652 -0
- data/test/test_helper.rb +9 -0
- data/test/test_pkg.rb +38 -0
- data/test/test_rbbt.rb +90 -0
- metadata +185 -0
data/lib/rbbt-util.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rbbt'
|
2
|
+
require 'rbbt/util/open'
|
3
|
+
require 'rbbt/util/cmd'
|
4
|
+
require 'rbbt/util/tmpfile'
|
5
|
+
require 'rbbt/util/filecache'
|
6
|
+
require 'rbbt/util/tsv'
|
7
|
+
require 'rbbt/util/cachehelper'
|
8
|
+
require 'rbbt/util/misc'
|
9
|
+
|
10
|
+
FileCache.cachedir = Rbbt.cachedir
|
11
|
+
Open.cachedir = File.join(Rbbt.cachedir, 'open-remote/')
|
12
|
+
TmpFile.tmpdir = File.join(Rbbt.tmpdir)
|
13
|
+
TSV.cachedir = File.join(Rbbt.cachedir, 'tsv_cache')
|
data/lib/rbbt.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rbbt/util/pkg_config'
|
2
|
+
require 'rbbt/util/pkg_data'
|
3
|
+
require 'rbbt/util/pkg_software'
|
4
|
+
require 'rbbt/util/open'
|
5
|
+
require 'rbbt/util/tmpfile'
|
6
|
+
require 'rbbt/util/filecache'
|
7
|
+
|
8
|
+
module Rbbt
|
9
|
+
extend PKGConfig
|
10
|
+
extend PKGData
|
11
|
+
extend PKGSoftware
|
12
|
+
|
13
|
+
self.load_cfg(%w(tmpdir cachedir datadir))
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,257 @@
|
|
1
|
+
#vim: ft=sh
|
2
|
+
|
3
|
+
SOFTWARE_DIR="$RBBT_SOFTWARE_DIR"
|
4
|
+
OPT_DIR="$SOFTWARE_DIR/opt"; [ -d $OPT_SRC_DIR ] || mkdir -p $OPT_SRC_DIR
|
5
|
+
OPT_BIN_DIR="$OPT_DIR/bin"; [ -d $OPT_BIN_DIR ] || mkdir -p $OPT_BIN_DIR
|
6
|
+
OPT_SRC_DIR="$SOFTWARE_DIR/src"; [ -d $OPT_SRC_DIR ] || mkdir -p $OPT_SRC_DIR
|
7
|
+
OPT_SCM_DIR="$SOFTWARE_DIR/scm"; [ -d $OPT_SCM_DIR ] || mkdir -p $OPT_SCM_DIR
|
8
|
+
OPT_JAR_DIR="$OPT_DIR/jars"; [ -d $OPT_JAR_DIR ] || mkdir -p $OPT_JAR_DIR
|
9
|
+
OPT_BUILD_DIR="$SOFTWARE_DIR/.build"; [ -d $OPT_BUILD_DIR ] || mkdir -p $OPT_BUILD_DIR
|
10
|
+
|
11
|
+
#source "$HOME/config/bash/_utility_functions"
|
12
|
+
|
13
|
+
function expand_path(){
|
14
|
+
name=$(basename $1)
|
15
|
+
dir=$(dirname $1)
|
16
|
+
|
17
|
+
echo "$(cd $dir && pwd)/$name"
|
18
|
+
}
|
19
|
+
|
20
|
+
|
21
|
+
#{{{ GET PKG OPT_BUILD_DIR
|
22
|
+
|
23
|
+
# From SRC
|
24
|
+
get_pkg(){
|
25
|
+
local name="$1"
|
26
|
+
local url="$2"
|
27
|
+
|
28
|
+
if [ ! -f "$OPT_SRC_DIR/$name.pkg" ]; then
|
29
|
+
wget "$url" -O "$OPT_SRC_DIR/$name.pkg"
|
30
|
+
fi
|
31
|
+
}
|
32
|
+
|
33
|
+
uncompress_pkg(){
|
34
|
+
local name="$1"
|
35
|
+
local pkg="$OPT_SRC_DIR/$name.pkg"
|
36
|
+
|
37
|
+
local old_pwd="`expand_path $(pwd)`"
|
38
|
+
clean_build
|
39
|
+
|
40
|
+
cd "$OPT_BUILD_DIR"
|
41
|
+
|
42
|
+
(tar xvfz $pkg || tar xvfj $pkg || unzip $pkg || echo "Error decompressing") 2> /dev/null
|
43
|
+
|
44
|
+
cd "$old_pwd"
|
45
|
+
}
|
46
|
+
|
47
|
+
get_src(){
|
48
|
+
local name="$1"
|
49
|
+
local url="$2"
|
50
|
+
|
51
|
+
get_pkg "$name" "$url"
|
52
|
+
uncompress_pkg "$name"
|
53
|
+
}
|
54
|
+
|
55
|
+
# From SNV
|
56
|
+
get_svn(){
|
57
|
+
local name="$1"
|
58
|
+
local url="$2"
|
59
|
+
|
60
|
+
local old_pwd="`expand_path $(pwd)`"
|
61
|
+
|
62
|
+
cd $OPT_SCM_DIR
|
63
|
+
if [ -d "$name" ]; then
|
64
|
+
cd "$name"
|
65
|
+
svn update
|
66
|
+
else
|
67
|
+
git checkout "$url" "$name"
|
68
|
+
fi
|
69
|
+
|
70
|
+
clean_build
|
71
|
+
|
72
|
+
cd $OPT_BUILD_DIR
|
73
|
+
ln -s "$OPT_SCM_DIR/$name" "$name"
|
74
|
+
|
75
|
+
cd "$old_pwd"
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
# From GIT
|
80
|
+
get_git(){
|
81
|
+
local name="$1"
|
82
|
+
local url="$2"
|
83
|
+
|
84
|
+
local old_pwd="`expand_path $(pwd)`"
|
85
|
+
|
86
|
+
cd $OPT_SCM_DIR
|
87
|
+
if [ -d "$name" ]; then
|
88
|
+
cd "$name"
|
89
|
+
git stash
|
90
|
+
git pull origin master
|
91
|
+
git rebase master
|
92
|
+
git stash apply
|
93
|
+
else
|
94
|
+
git clone "$url" "$name"
|
95
|
+
fi
|
96
|
+
|
97
|
+
clean_build
|
98
|
+
|
99
|
+
cd $OPT_BUILD_DIR
|
100
|
+
ln -s "$OPT_SCM_DIR/$name" "$name"
|
101
|
+
|
102
|
+
cd "$old_pwd"
|
103
|
+
}
|
104
|
+
|
105
|
+
|
106
|
+
#{{{ BUILD PKG in OPT_BUILD_DIR
|
107
|
+
|
108
|
+
clean_build(){
|
109
|
+
rm -Rf $OPT_BUILD_DIR/*
|
110
|
+
}
|
111
|
+
|
112
|
+
build_dir(){
|
113
|
+
echo $OPT_BUILD_DIR/`ls $OPT_BUILD_DIR |head -n 1`
|
114
|
+
}
|
115
|
+
|
116
|
+
compile(){
|
117
|
+
local name=$1; shift
|
118
|
+
local extra="$@"
|
119
|
+
[ -f Makefile ] && make && make install
|
120
|
+
[ -f build.xml ] && ant
|
121
|
+
[ -f setup.rb ] && ruby -Ilib/ setup.rb --prefix="$(opt_dir "$name")" $extra
|
122
|
+
[ -f setup.py ] && python setup.py build && python setup.py install --user && clean_build
|
123
|
+
}
|
124
|
+
|
125
|
+
build(){
|
126
|
+
local name=$1; shift
|
127
|
+
local extra="$@"
|
128
|
+
|
129
|
+
echo "Building $name"
|
130
|
+
|
131
|
+
local old_pwd="`expand_path $(pwd)`"
|
132
|
+
cd "`build_dir`"
|
133
|
+
echo `pwd`
|
134
|
+
ls
|
135
|
+
|
136
|
+
if [ -f aclocal.m4 ]; then
|
137
|
+
autoconf
|
138
|
+
fi
|
139
|
+
|
140
|
+
if [ -f autogen.sh ]; then
|
141
|
+
./autogen.sh
|
142
|
+
fi
|
143
|
+
|
144
|
+
if [ -f aclocal.m4 ]; then
|
145
|
+
autoconf
|
146
|
+
fi
|
147
|
+
|
148
|
+
if [ -f configure ]; then
|
149
|
+
./configure --prefix="$(opt_dir "$name")" $extra
|
150
|
+
compile "$name" $extra
|
151
|
+
setup "$name"
|
152
|
+
clean_build
|
153
|
+
else
|
154
|
+
compile "$name" $extra
|
155
|
+
move_opt "$name"
|
156
|
+
setup "$name"
|
157
|
+
clean_build
|
158
|
+
fi
|
159
|
+
|
160
|
+
cd "$old_pwd"
|
161
|
+
}
|
162
|
+
|
163
|
+
#{{{ SETUP
|
164
|
+
|
165
|
+
versioned?(){
|
166
|
+
local name="$1"
|
167
|
+
echo $name | grep ':' &>/dev/null
|
168
|
+
}
|
169
|
+
|
170
|
+
opt_dir(){
|
171
|
+
local name="$1"
|
172
|
+
if versioned? "$name"; then
|
173
|
+
local real_name=`echo $1 | sed 's/:.*//'`
|
174
|
+
local version=`echo $1 | sed 's/.*://'`
|
175
|
+
echo "$OPT_DIR/$real_name/$version"
|
176
|
+
else
|
177
|
+
echo "$OPT_DIR/$name"
|
178
|
+
fi
|
179
|
+
}
|
180
|
+
|
181
|
+
move_opt(){
|
182
|
+
local name="$1"
|
183
|
+
local pkg_dir="`opt_dir \"$name\"`"
|
184
|
+
|
185
|
+
mkdir -p $(dirname "$pkg_dir")
|
186
|
+
mv "`build_dir`" "$pkg_dir"
|
187
|
+
}
|
188
|
+
|
189
|
+
setup(){
|
190
|
+
local name="$1"
|
191
|
+
local pkg_dir="`opt_dir \"$name\"`"
|
192
|
+
|
193
|
+
if versioned? "$name"; then
|
194
|
+
rm -f "$(dirname $pkg_dir)/current"
|
195
|
+
ln -sf "$pkg_dir" "$(dirname $pkg_dir)/current"
|
196
|
+
pkg_dir="$(dirname $pkg_dir)/current"
|
197
|
+
fi
|
198
|
+
|
199
|
+
if [ -d "$pkg_dir/bin/" ]; then
|
200
|
+
local old_pwd="`expand_path $(pwd)`"
|
201
|
+
cd "$OPT_DIR/bin"
|
202
|
+
|
203
|
+
for exe in `ls "$pkg_dir/bin/"`;do
|
204
|
+
rm -f ./$exe
|
205
|
+
ln -s "$pkg_dir/bin/$exe" . 2>/dev/null
|
206
|
+
done
|
207
|
+
|
208
|
+
cd "$old_pwd"
|
209
|
+
fi
|
210
|
+
|
211
|
+
([ -d "$pkg_dir/lib" ] && add2file "$OPT_DIR/.ld-paths" "$pkg_dir/lib")
|
212
|
+
([ -d "$pkg_dir/lib/pkgconfig" ] && add2file "$OPT_DIR/.pkgconfig-paths" "$pkg_dir/lib/pkgconfig")
|
213
|
+
}
|
214
|
+
|
215
|
+
#{{{ HELPERS
|
216
|
+
|
217
|
+
install_src(){
|
218
|
+
local name="$1"
|
219
|
+
local url="$2"
|
220
|
+
shift;shift;
|
221
|
+
local extra="$@"
|
222
|
+
|
223
|
+
get_pkg "$name" "$url"
|
224
|
+
uncompress_pkg "$name"
|
225
|
+
build "$name" "$extra"
|
226
|
+
}
|
227
|
+
|
228
|
+
install_git(){
|
229
|
+
local name="$1"
|
230
|
+
local url="$2"
|
231
|
+
shift;shift;
|
232
|
+
local extra="$@"
|
233
|
+
|
234
|
+
get_git "$name" "$url"
|
235
|
+
build "$name" $extra
|
236
|
+
}
|
237
|
+
|
238
|
+
install_jar(){
|
239
|
+
local name="$1"
|
240
|
+
local url="$2"
|
241
|
+
|
242
|
+
[ -d "$OPT_DIR/$name/" ] || mkdir -p "$OPT_DIR/$name/"
|
243
|
+
wget "$url" -O "$OPT_DIR/$name/$name.jar"
|
244
|
+
ln -s "$OPT_DIR/$name/$name.jar" "$OPT_JAR_DIR/$name.jar"
|
245
|
+
}
|
246
|
+
|
247
|
+
jar2bin(){
|
248
|
+
local name="$1";shift
|
249
|
+
local extra="$@"
|
250
|
+
|
251
|
+
echo "#!/bin/bash" > $OPT_DIR/bin/$name
|
252
|
+
echo "java $extra -jar '$OPT_JAR_DIR/$name.jar'" >> $OPT_DIR/bin/$name
|
253
|
+
|
254
|
+
chmod +x $OPT_DIR/bin/$name
|
255
|
+
}
|
256
|
+
|
257
|
+
# vim: ft=sh
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/cmd'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestCmd < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_cmd_option_string
|
8
|
+
assert_equal("--user-agent firefox", CMD.process_cmd_options("--user-agent" => "firefox"))
|
9
|
+
assert_equal("--user-agent=firefox", CMD.process_cmd_options("--user-agent=" => "firefox"))
|
10
|
+
assert_equal("-q", CMD.process_cmd_options("-q" => true))
|
11
|
+
assert_equal("", CMD.process_cmd_options("-q" => nil))
|
12
|
+
assert_equal("", CMD.process_cmd_options("-q" => false))
|
13
|
+
|
14
|
+
assert(CMD.process_cmd_options("--user-agent" => "firefox", "-q" => true) =~ /--user-agent firefox/)
|
15
|
+
assert(CMD.process_cmd_options("--user-agent" => "firefox", "-q" => true) =~ /-q/)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_cmd
|
19
|
+
assert_equal("test\n", CMD.cmd("echo '{opt}' test").read)
|
20
|
+
assert_equal("test", CMD.cmd("echo '{opt}' test", "-n" => true).read)
|
21
|
+
assert_equal("test2\n", CMD.cmd("cut", "-f" => 2, "-d" => '" "', :in => "test1 test2").read)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_pipe
|
25
|
+
assert_equal("test\n", CMD.cmd("echo '{opt}' test", :pipe => true).read)
|
26
|
+
assert_equal("test", CMD.cmd("echo '{opt}' test", "-n" => true, :pipe => true).read)
|
27
|
+
assert_equal("test2\n", CMD.cmd("cut", "-f" => 2, "-d" => '" "', :in => "test1 test2", :pipe => true).read)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt'
|
3
|
+
require 'rbbt/util/data_module'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module DataTest
|
8
|
+
extend DataModule
|
9
|
+
|
10
|
+
def self.salute(name)
|
11
|
+
"Hello #{name}"
|
12
|
+
end
|
13
|
+
|
14
|
+
World = with_key("world")
|
15
|
+
end
|
16
|
+
|
17
|
+
class TestDataModule < Test::Unit::TestCase
|
18
|
+
|
19
|
+
SHAREDIR = File.join(PKGData.sharedir_for_file(__FILE__), 'install', 'DataTest')
|
20
|
+
|
21
|
+
def setup
|
22
|
+
FileUtils.mkdir_p SHAREDIR
|
23
|
+
File.open(File.join(SHAREDIR, 'Rakefile'), 'w') do |f|
|
24
|
+
f.puts "task :file1 do |t| File.open(t.name, 'w') do |f| f.write 'File 1' end end"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_module
|
29
|
+
assert_equal "File 1", Open.read(DataTest.file1).chomp
|
30
|
+
assert_equal "Hello world", DataTest.salute("world")
|
31
|
+
assert_equal "Hello world", DataTest.salute("world")
|
32
|
+
assert_equal "Hello world", DataTest::with_key("world").salute
|
33
|
+
assert_equal "Hello world", DataTest::World.salute
|
34
|
+
FileUtils.rm_rf File.join(Rbbt.datadir, 'DataTest')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_method_missing
|
38
|
+
assert_raise NoMethodError do DataTest.missing end
|
39
|
+
end
|
40
|
+
|
41
|
+
def teardown
|
42
|
+
FileUtils.rm_rf SHAREDIR
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/excel2tsv'
|
3
|
+
|
4
|
+
class TestTSV < Test::Unit::TestCase
|
5
|
+
def test_tsv2excel
|
6
|
+
tsv = TSV.excel2tsv(test_datafile('Test.xls'), :header => true)
|
7
|
+
assert_equal 'Id', tsv.key_field
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/filecache'
|
3
|
+
require 'rbbt-util'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestFileCache < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_path
|
9
|
+
assert_equal(File.join(Rbbt.cachedir,'3','2','1','123.ext'), FileCache.path('123.ext'))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_add_read
|
13
|
+
filename = '123.ext'
|
14
|
+
content = 'test'
|
15
|
+
|
16
|
+
FileCache.add(filename, content)
|
17
|
+
assert_equal(content, File.open(FileCache.path(filename)).read)
|
18
|
+
assert_equal(content, FileCache.get(filename).read)
|
19
|
+
|
20
|
+
FileCache.del(filename)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_add_io
|
24
|
+
filename = '123.ext'
|
25
|
+
content =<<-EOF
|
26
|
+
test test test
|
27
|
+
test test test
|
28
|
+
EOF
|
29
|
+
|
30
|
+
FileCache.add(filename, StringIO.new(content))
|
31
|
+
assert_equal(content, File.open(FileCache.path(filename)).read)
|
32
|
+
|
33
|
+
FileCache.del(filename)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/misc'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestMisc < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_string2hash
|
8
|
+
assert(Misc.string2hash("--user-agent=firefox").include? "--user-agent")
|
9
|
+
assert(Misc.string2hash(":true")[:true] == true)
|
10
|
+
assert(Misc.string2hash("true")["true"] == true)
|
11
|
+
assert(Misc.string2hash("a=1")["a"] == 1)
|
12
|
+
assert(Misc.string2hash("a=b")["a"] == 'b')
|
13
|
+
assert(Misc.string2hash("a=b#c=d#:h=j")["c"] == 'd')
|
14
|
+
assert(Misc.string2hash("a=b#c=d#:h=j")[:h] == 'j')
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_named_array
|
18
|
+
a = NamedArray.name([1,2,3,4], %w(a b c d))
|
19
|
+
assert_equal(1, a['a'])
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/open'
|
3
|
+
require 'rbbt/util/tmpfile'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'iconv'
|
6
|
+
|
7
|
+
class TestOpen < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_wget
|
10
|
+
assert(Misc.fixutf8(Open.wget('http://google.com', :quiet => true).read) =~ /html/)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_nice
|
14
|
+
nice = 0.5
|
15
|
+
|
16
|
+
Open.wget('http://google.com', :quiet => true, :nice => nice).read =~ /html/
|
17
|
+
t = Time.now
|
18
|
+
Open.wget('http://google.com', :quiet => true, :nice => nice).read =~ /html/
|
19
|
+
assert(Time.now - t + 0.5 >= nice)
|
20
|
+
|
21
|
+
Open.wget('http://google.com', :quiet => true, :nice => nice, :nice_key => 1).read =~ /html/
|
22
|
+
Open.wget('http://google.com', :quiet => true, :nice => nice, :nice_key => 2).read =~ /html/
|
23
|
+
t = Time.now
|
24
|
+
Open.wget('http://google.com', :quiet => true, :nice => nice, :nice_key => 1).read =~ /html/
|
25
|
+
assert(Time.now - t + 0.5 >= nice)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_remote?
|
29
|
+
assert(Open.remote?('http://google.com'))
|
30
|
+
assert(! Open.remote?('~/.bashrc'))
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_open
|
34
|
+
assert(Open.read('http://google.com', :quiet => true) =~ /html/)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_read
|
38
|
+
content =<<-EOF
|
39
|
+
1
|
40
|
+
2
|
41
|
+
3
|
42
|
+
4
|
43
|
+
EOF
|
44
|
+
TmpFile.with_file(content) do |file|
|
45
|
+
sum = 0
|
46
|
+
Open.read file do |line| sum += line.to_i end
|
47
|
+
assert_equal(1 + 2 + 3 + 4, sum)
|
48
|
+
assert_equal(content, Open.read(file))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_read_grep
|
53
|
+
content =<<-EOF
|
54
|
+
1
|
55
|
+
2
|
56
|
+
3
|
57
|
+
4
|
58
|
+
EOF
|
59
|
+
TmpFile.with_file(content) do |file|
|
60
|
+
sum = 0
|
61
|
+
Open.read(file, :grep => '^1\|3') do |line| sum += line.to_i end
|
62
|
+
assert_equal(1 + 3, sum)
|
63
|
+
end
|
64
|
+
|
65
|
+
TmpFile.with_file(content) do |file|
|
66
|
+
sum = 0
|
67
|
+
Open.read(file, :grep => ["1","3"]) do |line| sum += line.to_i end
|
68
|
+
assert_equal(1 + 3, sum)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_gzip
|
74
|
+
content =<<-EOF
|
75
|
+
1
|
76
|
+
2
|
77
|
+
3
|
78
|
+
4
|
79
|
+
EOF
|
80
|
+
TmpFile.with_file(content) do |file|
|
81
|
+
`gzip #{file}`
|
82
|
+
assert_equal(content, Open.read(file + '.gz'))
|
83
|
+
FileUtils.rm file + '.gz'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
end
|
89
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/simpleDSL'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestClass
|
6
|
+
include SimpleDSL
|
7
|
+
|
8
|
+
def action(name, *args, &block)
|
9
|
+
@actions ||= {}
|
10
|
+
@actions[name] = args.first
|
11
|
+
end
|
12
|
+
|
13
|
+
def actions
|
14
|
+
@actions
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
class TestDSL < Test::Unit::TestCase
|
20
|
+
def setup
|
21
|
+
@parser = TestClass.new
|
22
|
+
@parser.load_config(:action) do
|
23
|
+
action1 "Hello"
|
24
|
+
action2 "Good bye"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_actions
|
29
|
+
assert_equal({:action1=>"Hello", :action2=>"Good bye"}, @parser.actions)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_method_missing
|
33
|
+
assert_raise(NoMethodError){@parser.cues}
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_config
|
37
|
+
config = <<-EOC
|
38
|
+
action1("Hello")
|
39
|
+
action2("Good bye")
|
40
|
+
EOC
|
41
|
+
|
42
|
+
begin
|
43
|
+
assert(@parser.config(:action) == config)
|
44
|
+
rescue SimpleDSL::NoRuby2Ruby
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_parse
|
49
|
+
@parser.parse :action do
|
50
|
+
action3 "Back again"
|
51
|
+
end
|
52
|
+
|
53
|
+
assert_equal({:action1 =>"Hello", :action2 =>"Good bye", :action3 =>"Back again"}, @parser.actions)
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/simpleopt'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestSOPT < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_cmd_option_string
|
8
|
+
assert_equal("--tsv-options", SOPT.parse("-h--help:-to--tsv-options")["tsv-options"][:long])
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/tmpfile'
|
3
|
+
require 'rbbt/util/tc_hash'
|
4
|
+
|
5
|
+
class TestTCHash < Test::Unit::TestCase
|
6
|
+
def test_each
|
7
|
+
TmpFile.with_file do |f|
|
8
|
+
t = TCHash.new f
|
9
|
+
t["1"] = 2
|
10
|
+
t["2"] = 3
|
11
|
+
|
12
|
+
t.collect do |k,v|
|
13
|
+
puts k
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'rbbt/util/tmpfile'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
class TestTmpFile < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_tmp_file
|
8
|
+
assert(TmpFile.tmp_file("test") =~ /tmp\/test\d+$/)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_do_tmp_file
|
12
|
+
content = "Hello World!"
|
13
|
+
TmpFile.with_file(content) do |file|
|
14
|
+
assert_equal content, File.open(file).read
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
|