rbbt-util 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|