bfts 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.
- data/History.txt +4 -0
- data/Manifest.txt +17 -0
- data/README.txt +61 -0
- data/Rakefile +17 -0
- data/rubicon_testcase.rb +29 -0
- data/test_array.rb +1261 -0
- data/test_comparable.rb +71 -0
- data/test_exception.rb +78 -0
- data/test_false_class.rb +32 -0
- data/test_file_test.rb +372 -0
- data/test_hash.rb +681 -0
- data/test_nil_class.rb +51 -0
- data/test_range.rb +281 -0
- data/test_string.rb +1793 -0
- data/test_struct.rb +194 -0
- data/test_time.rb +700 -0
- data/test_true_class.rb +33 -0
- metadata +79 -0
data/test_comparable.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'rubicon_testcase'
|
|
3
|
+
|
|
4
|
+
class TestComparable < RubiconTestCase
|
|
5
|
+
|
|
6
|
+
class C
|
|
7
|
+
include Comparable
|
|
8
|
+
attr :val
|
|
9
|
+
def initialize(val)
|
|
10
|
+
@val = val
|
|
11
|
+
end
|
|
12
|
+
def <=>(other)
|
|
13
|
+
@val <=> other.val
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
@a = C.new(1)
|
|
19
|
+
@b = C.new(2)
|
|
20
|
+
@c = C.new(1)
|
|
21
|
+
@d = C.new(3)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_00sanity # ZenTest SKIP
|
|
25
|
+
assert_equal( 0, @a <=> @a)
|
|
26
|
+
assert_equal( 0, @a <=> @c)
|
|
27
|
+
assert_equal(-1, @a <=> @b)
|
|
28
|
+
assert_equal( 1, @b <=> @a)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_between_eh
|
|
32
|
+
assert( @a.between?(@a, @c))
|
|
33
|
+
assert(!@a.between?(@b, @c))
|
|
34
|
+
assert( @b.between?(@a, @b))
|
|
35
|
+
assert( @b.between?(@a, @d))
|
|
36
|
+
assert(!@d.between?(@a, @b))
|
|
37
|
+
assert(!@d.between?(@b, @b))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_equals2
|
|
41
|
+
assert( @a == @a)
|
|
42
|
+
assert( @a == @c)
|
|
43
|
+
assert(!(@a == @b))
|
|
44
|
+
assert( @a != @b)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_gt
|
|
48
|
+
assert(!(@a > @b))
|
|
49
|
+
assert(!(@a > @a))
|
|
50
|
+
assert( (@b > @a))
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_gte
|
|
54
|
+
assert(!(@a >= @b))
|
|
55
|
+
assert( (@a >= @a))
|
|
56
|
+
assert( (@b >= @a))
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_lt
|
|
60
|
+
assert( (@a < @b))
|
|
61
|
+
assert(!(@a < @a))
|
|
62
|
+
assert(!(@b < @a))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_lte
|
|
66
|
+
assert( (@a <= @b))
|
|
67
|
+
assert( (@a <= @a))
|
|
68
|
+
assert(!(@b <= @a))
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
data/test_exception.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'test/unit' if $0 == __FILE__
|
|
2
|
+
require 'rubicon_testcase'
|
|
3
|
+
|
|
4
|
+
class TestException < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
MSG = "duck"
|
|
7
|
+
|
|
8
|
+
def test_s_exception
|
|
9
|
+
e = Exception.exception
|
|
10
|
+
assert_equal(Exception, e.class)
|
|
11
|
+
|
|
12
|
+
e = Exception.exception(MSG)
|
|
13
|
+
assert_equal(MSG, e.message)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_backtrace
|
|
17
|
+
assert_nil(Exception.exception.backtrace)
|
|
18
|
+
begin
|
|
19
|
+
line=__LINE__; file=__FILE__; raise MSG
|
|
20
|
+
rescue RuntimeError => detail
|
|
21
|
+
assert_equal(RuntimeError, detail.class)
|
|
22
|
+
assert_equal(MSG, detail.message)
|
|
23
|
+
expected = "#{file}:#{line}:in `test_backtrace'"
|
|
24
|
+
assert_equal(expected, detail.backtrace[0])
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_exception
|
|
29
|
+
e = IOError.new
|
|
30
|
+
assert_equal(IOError, e.class)
|
|
31
|
+
assert_equal(IOError, e.exception.class)
|
|
32
|
+
assert_equal(e, e.exception)
|
|
33
|
+
|
|
34
|
+
e = IOError.new
|
|
35
|
+
e1 = e.exception(MSG)
|
|
36
|
+
assert_equal(IOError, e1.class)
|
|
37
|
+
assert_equal(MSG, e1.message)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_message
|
|
41
|
+
e = IOError.new(MSG)
|
|
42
|
+
assert_equal(MSG, e.message)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_set_backtrace
|
|
46
|
+
e = IOError.new
|
|
47
|
+
a = %w( here there everywhere )
|
|
48
|
+
assert_equal(a, e.set_backtrace(a))
|
|
49
|
+
assert_equal(a, e.backtrace)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# FIX: this is retardedly complex
|
|
53
|
+
# exercise bug in Exception#set_backtrace, see [ruby-talk:96273].
|
|
54
|
+
class Problem # helper class for #test_set_backtrace2
|
|
55
|
+
STACK = %w(a:0:A b:1:B c:2:C)
|
|
56
|
+
def self.mk_problem
|
|
57
|
+
raise IOError, "got nuked"
|
|
58
|
+
rescue IOError => e
|
|
59
|
+
error = IOError.new("got nuked")
|
|
60
|
+
error.set_backtrace(STACK)
|
|
61
|
+
raise error
|
|
62
|
+
end
|
|
63
|
+
def self.mk_exception
|
|
64
|
+
begin
|
|
65
|
+
self.mk_problem
|
|
66
|
+
raise "should not happen"
|
|
67
|
+
rescue IOError => e
|
|
68
|
+
return e
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
def test_set_backtrace2
|
|
73
|
+
e = Problem.mk_exception
|
|
74
|
+
assert_equal("got nuked", e.message)
|
|
75
|
+
# this is how set_backtrace is suppose to work
|
|
76
|
+
assert_equal(Problem::STACK, e.backtrace)
|
|
77
|
+
end
|
|
78
|
+
end
|
data/test_false_class.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'rubicon_testcase'
|
|
3
|
+
|
|
4
|
+
class TestFalseClass < RubiconTestCase
|
|
5
|
+
|
|
6
|
+
def test_00sanity
|
|
7
|
+
assert_equal(false, FALSE)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_and
|
|
11
|
+
truth_table(false.method("&"), false, false)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_carat
|
|
15
|
+
truth_table(false.method("^"), false, true)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_or
|
|
19
|
+
truth_table(false.method("|"), false, true)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_to_s
|
|
23
|
+
assert_equal("false", false.to_s)
|
|
24
|
+
assert_equal("false", FALSE.to_s)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_type
|
|
28
|
+
assert_equal(FalseClass, false.class)
|
|
29
|
+
assert_equal(FalseClass, FALSE.class)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
data/test_file_test.rb
ADDED
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'tempfile'
|
|
3
|
+
require 'socket'
|
|
4
|
+
require 'rubicon_testcase'
|
|
5
|
+
|
|
6
|
+
class TestFileTest < RubiconTestCase
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
@empty = Tempfile.new 'empty'
|
|
10
|
+
|
|
11
|
+
@full = Tempfile.new 'full'
|
|
12
|
+
@full << 'full'
|
|
13
|
+
@full.flush
|
|
14
|
+
|
|
15
|
+
nonexistent = Tempfile.new 'nonexistent'
|
|
16
|
+
@nonexistent_path = nonexistent.path
|
|
17
|
+
nonexistent.unlink
|
|
18
|
+
|
|
19
|
+
File.symlink @empty.path, @empty.path + '.symlink'
|
|
20
|
+
@symlink = File.open @empty.path + '.symlink'
|
|
21
|
+
|
|
22
|
+
socket_file = Tempfile.new 'socket'
|
|
23
|
+
socket_file.close true
|
|
24
|
+
@socket = UNIXServer.new socket_file.path
|
|
25
|
+
|
|
26
|
+
@pipe = Tempfile.new 'pipe'
|
|
27
|
+
@pipe.close true
|
|
28
|
+
system "mkfifo #{@pipe.path}"
|
|
29
|
+
|
|
30
|
+
@real_tmp = Dir.tmpdir
|
|
31
|
+
Dir.chdir '/' do
|
|
32
|
+
@real_tmp = File.symlink?(@real_tmp) ?
|
|
33
|
+
File.expand_path(File.readlink(@real_tmp)) :
|
|
34
|
+
@real_tmp
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def teardown
|
|
39
|
+
File.unlink @symlink.path
|
|
40
|
+
@symlink.close
|
|
41
|
+
|
|
42
|
+
File.unlink @socket.path
|
|
43
|
+
@socket.close
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def required_filetypes
|
|
47
|
+
return [
|
|
48
|
+
[:blockdev, '/dev/disk0'],
|
|
49
|
+
[:chardev, '/dev/rdisk0'],
|
|
50
|
+
[:directory, '/bin'],
|
|
51
|
+
[:empty, @empty.path],
|
|
52
|
+
[:full, @full.path],
|
|
53
|
+
[:nonexistent, @nonexistent_path],
|
|
54
|
+
[:pipe, @pipe.path],
|
|
55
|
+
[:setgid, '/usr/bin/write'],
|
|
56
|
+
[:setuid, '/sbin/ping'],
|
|
57
|
+
[:socket, @socket.path],
|
|
58
|
+
[:sticky_dir, @real_tmp],
|
|
59
|
+
]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def util_test(method, filetypes)
|
|
63
|
+
required_filetypes.each do |filetype, path|
|
|
64
|
+
unless filetypes.include? filetype then
|
|
65
|
+
raise "Missing result for #{filetype.inspect}"
|
|
66
|
+
end
|
|
67
|
+
# TODO make this a def
|
|
68
|
+
assert_equal filetypes[filetype], FileTest.send(method, path),
|
|
69
|
+
"Mismatch for #{filetype.inspect} calling #{method.inspect}"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_class_blockdev_eh
|
|
74
|
+
util_test :blockdev?, :blockdev => true,
|
|
75
|
+
:chardev => false,
|
|
76
|
+
:directory => false,
|
|
77
|
+
:full => false,
|
|
78
|
+
:empty => false,
|
|
79
|
+
:nonexistent => false,
|
|
80
|
+
:pipe => false,
|
|
81
|
+
:setgid => false,
|
|
82
|
+
:setuid => false,
|
|
83
|
+
:socket => false,
|
|
84
|
+
:sticky_dir => false,
|
|
85
|
+
:symlink => true
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_class_chardev_eh
|
|
89
|
+
util_test :chardev?, :blockdev => false,
|
|
90
|
+
:chardev => true,
|
|
91
|
+
:directory => false,
|
|
92
|
+
:empty => false,
|
|
93
|
+
:full => false,
|
|
94
|
+
:nonexistent => false,
|
|
95
|
+
:pipe => false,
|
|
96
|
+
:setgid => false,
|
|
97
|
+
:setuid => false,
|
|
98
|
+
:socket => false,
|
|
99
|
+
:sticky_dir => false,
|
|
100
|
+
:symlink => true
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_class_directory_eh
|
|
104
|
+
util_test :directory?, :blockdev => false,
|
|
105
|
+
:chardev => false,
|
|
106
|
+
:directory => true,
|
|
107
|
+
:empty => false,
|
|
108
|
+
:full => false,
|
|
109
|
+
:nonexistent => false,
|
|
110
|
+
:pipe => false,
|
|
111
|
+
:setgid => false,
|
|
112
|
+
:setuid => false,
|
|
113
|
+
:socket => false,
|
|
114
|
+
:sticky_dir => true,
|
|
115
|
+
:symlink => true
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_class_executable_eh
|
|
119
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
120
|
+
assert_equal false, FileTest.executable?(@empty.path)
|
|
121
|
+
@empty.chmod 0100
|
|
122
|
+
assert_equal true, FileTest.executable?(@empty.path)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_class_executable_real_eh
|
|
126
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
127
|
+
assert_equal false, FileTest.executable_real?(@empty.path)
|
|
128
|
+
@empty.chmod 0100
|
|
129
|
+
assert_equal true, FileTest.executable_real?(@empty.path)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def test_class_exist_eh
|
|
133
|
+
util_test :exist?, :blockdev => true,
|
|
134
|
+
:chardev => true,
|
|
135
|
+
:directory => true,
|
|
136
|
+
:empty => true,
|
|
137
|
+
:full => true,
|
|
138
|
+
:nonexistent => false,
|
|
139
|
+
:pipe => true,
|
|
140
|
+
:setgid => true,
|
|
141
|
+
:setuid => true,
|
|
142
|
+
:socket => true,
|
|
143
|
+
:sticky_dir => true,
|
|
144
|
+
:symlink => true
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def test_class_exists_eh
|
|
148
|
+
util_test :exists?, :blockdev => true,
|
|
149
|
+
:chardev => true,
|
|
150
|
+
:directory => true,
|
|
151
|
+
:empty => true,
|
|
152
|
+
:full => true,
|
|
153
|
+
:nonexistent => false,
|
|
154
|
+
:pipe => true,
|
|
155
|
+
:setgid => true,
|
|
156
|
+
:setuid => true,
|
|
157
|
+
:socket => true,
|
|
158
|
+
:sticky_dir => true,
|
|
159
|
+
:symlink => true
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def test_class_file_eh
|
|
163
|
+
util_test :file?, :blockdev => false,
|
|
164
|
+
:chardev => false,
|
|
165
|
+
:directory => false,
|
|
166
|
+
:empty => true,
|
|
167
|
+
:full => true,
|
|
168
|
+
:nonexistent => false,
|
|
169
|
+
:pipe => false,
|
|
170
|
+
:setgid => true,
|
|
171
|
+
:setuid => true,
|
|
172
|
+
:socket => false,
|
|
173
|
+
:sticky_dir => false,
|
|
174
|
+
:symlink => true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def test_class_grpowned_eh
|
|
178
|
+
# HACK this test sucks, doesn't test euid
|
|
179
|
+
assert_equal true, FileTest.grpowned?(ENV['HOME'])
|
|
180
|
+
assert_equal false, FileTest.grpowned?('/')
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def test_class_identical_eh
|
|
184
|
+
# TODO: raise NotImplementedError, 'Need to write test_class_identical_eh'
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def test_class_owned_eh
|
|
188
|
+
# HACK this test sucks, doesn't test euid
|
|
189
|
+
assert_equal true, FileTest.owned?(ENV['HOME'])
|
|
190
|
+
assert_equal false, FileTest.owned?('/')
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def test_class_pipe_eh
|
|
194
|
+
util_test :pipe?, :blockdev => false,
|
|
195
|
+
:chardev => false,
|
|
196
|
+
:directory => false,
|
|
197
|
+
:empty => false,
|
|
198
|
+
:full => false,
|
|
199
|
+
:nonexistent => false,
|
|
200
|
+
:pipe => true,
|
|
201
|
+
:setgid => false,
|
|
202
|
+
:setuid => false,
|
|
203
|
+
:socket => false,
|
|
204
|
+
:sticky_dir => false,
|
|
205
|
+
:symlink => true
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def test_class_readable_eh
|
|
209
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
210
|
+
assert_equal true, FileTest.readable?(@empty.path)
|
|
211
|
+
@empty.chmod 0000
|
|
212
|
+
assert_equal false, FileTest.readable?(@empty.path)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def test_class_readable_real_eh
|
|
216
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
217
|
+
assert_equal true, FileTest.readable_real?(@empty.path)
|
|
218
|
+
@empty.chmod 0000
|
|
219
|
+
assert_equal false, FileTest.readable_real?(@empty.path)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def test_class_setgid_eh
|
|
223
|
+
util_test :setgid?, :blockdev => false,
|
|
224
|
+
:chardev => false,
|
|
225
|
+
:directory => false,
|
|
226
|
+
:empty => false,
|
|
227
|
+
:full => false,
|
|
228
|
+
:nonexistent => false,
|
|
229
|
+
:pipe => false,
|
|
230
|
+
:setgid => true,
|
|
231
|
+
:setuid => false,
|
|
232
|
+
:socket => false,
|
|
233
|
+
:sticky_dir => false,
|
|
234
|
+
:symlink => true
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def test_class_setuid_eh
|
|
238
|
+
util_test :setuid?, :blockdev => false,
|
|
239
|
+
:chardev => false,
|
|
240
|
+
:directory => false,
|
|
241
|
+
:empty => false,
|
|
242
|
+
:full => false,
|
|
243
|
+
:nonexistent => false,
|
|
244
|
+
:pipe => false,
|
|
245
|
+
:setgid => false,
|
|
246
|
+
:setuid => true,
|
|
247
|
+
:socket => false,
|
|
248
|
+
:sticky_dir => false,
|
|
249
|
+
:symlink => true
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
def util_size(f)
|
|
253
|
+
IO.read(f).size
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def test_class_size # TODO directories, nonexistent
|
|
257
|
+
filetypes = Hash[*required_filetypes.flatten]
|
|
258
|
+
assert_equal 0, FileTest.size(filetypes[:blockdev])
|
|
259
|
+
assert_equal 0, FileTest.size(filetypes[:chardev])
|
|
260
|
+
# HACK need proper test dir
|
|
261
|
+
#assert_equal 1360, FileTest.size(filetypes[:directory])
|
|
262
|
+
assert_operator 0, :<, FileTest.size(filetypes[:directory])
|
|
263
|
+
assert_equal 0, FileTest.size(filetypes[:empty])
|
|
264
|
+
assert_equal 4, FileTest.size(filetypes[:full])
|
|
265
|
+
assert_raises Errno::ENOENT do
|
|
266
|
+
FileTest.size filetypes[:nonexistent]
|
|
267
|
+
end
|
|
268
|
+
assert_equal 0, FileTest.size(filetypes[:pipe])
|
|
269
|
+
assert_equal util_size(filetypes[:setgid]), FileTest.size(filetypes[:setgid])
|
|
270
|
+
assert_equal util_size(filetypes[:setuid]), FileTest.size(filetypes[:setuid])
|
|
271
|
+
assert_equal 0, FileTest.size(filetypes[:socket])
|
|
272
|
+
# HACK need proper sticky test dir
|
|
273
|
+
#assert_equal 63988, FileTest.size(filetypes[:sticky_dir])
|
|
274
|
+
assert_operator 0, :<, FileTest.size(filetypes[:sticky_dir])
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def test_class_size_eh # TODO directories
|
|
278
|
+
filetypes = Hash[*required_filetypes.flatten]
|
|
279
|
+
assert_equal nil, FileTest.size?(filetypes[:blockdev])
|
|
280
|
+
assert_equal nil, FileTest.size?(filetypes[:chardev])
|
|
281
|
+
# HACK need proper test dir
|
|
282
|
+
#assert_equal 1360, FileTest.size?(filetypes[:directory])
|
|
283
|
+
assert_operator 0, :<, FileTest.size?(filetypes[:directory])
|
|
284
|
+
assert_equal nil, FileTest.size?(filetypes[:empty])
|
|
285
|
+
assert_equal 4, FileTest.size?(filetypes[:full])
|
|
286
|
+
assert_equal nil, FileTest.size?(filetypes[:nonexistent])
|
|
287
|
+
assert_equal nil, FileTest.size?(filetypes[:pipe])
|
|
288
|
+
assert_equal util_size(filetypes[:setgid]), FileTest.size?(filetypes[:setgid])
|
|
289
|
+
assert_equal util_size(filetypes[:setuid]), FileTest.size?(filetypes[:setuid])
|
|
290
|
+
assert_equal nil, FileTest.size?(filetypes[:socket])
|
|
291
|
+
# HACK need proper sticky test dir
|
|
292
|
+
#assert_equal 63988, FileTest.size?(filetypes[:sticky_dir])
|
|
293
|
+
assert_operator 0, :<, FileTest.size?(filetypes[:sticky_dir])
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
def test_class_socket_eh
|
|
297
|
+
util_test :socket?, :blockdev => false,
|
|
298
|
+
:chardev => false,
|
|
299
|
+
:directory => false,
|
|
300
|
+
:empty => false,
|
|
301
|
+
:full => false,
|
|
302
|
+
:nonexistent => false,
|
|
303
|
+
:pipe => false,
|
|
304
|
+
:setgid => false,
|
|
305
|
+
:setuid => false,
|
|
306
|
+
:socket => true,
|
|
307
|
+
:sticky_dir => false,
|
|
308
|
+
:symlink => true
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def test_class_sticky_eh # TODO find a sticky file
|
|
312
|
+
util_test :sticky?, :blockdev => false,
|
|
313
|
+
:chardev => false,
|
|
314
|
+
:directory => false,
|
|
315
|
+
:empty => false,
|
|
316
|
+
:full => false,
|
|
317
|
+
:nonexistent => false,
|
|
318
|
+
:pipe => false,
|
|
319
|
+
:setgid => false,
|
|
320
|
+
:setuid => false,
|
|
321
|
+
:socket => false,
|
|
322
|
+
:sticky_dir => true,
|
|
323
|
+
:symlink => true
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def test_class_symlink_eh
|
|
327
|
+
util_test :symlink?, :blockdev => false,
|
|
328
|
+
:chardev => false,
|
|
329
|
+
:directory => false,
|
|
330
|
+
:empty => false,
|
|
331
|
+
:full => false,
|
|
332
|
+
:nonexistent => false,
|
|
333
|
+
:pipe => false,
|
|
334
|
+
:setgid => false,
|
|
335
|
+
:setuid => false,
|
|
336
|
+
:socket => false,
|
|
337
|
+
:sticky_dir => false,
|
|
338
|
+
:symlink => true
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def test_class_writable_eh
|
|
342
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
343
|
+
assert_equal true, FileTest.writable?(@empty.path)
|
|
344
|
+
@empty.chmod 0000
|
|
345
|
+
assert_equal false, FileTest.writable?(@empty.path)
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
def test_class_writable_real_eh
|
|
349
|
+
# HACK this test sucks, doesn't test uid vs euid, ugo
|
|
350
|
+
assert_equal true, FileTest.writable_real?(@empty.path)
|
|
351
|
+
@empty.chmod 0000
|
|
352
|
+
assert_equal false, FileTest.writable_real?(@empty.path)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
def test_class_zero_eh
|
|
356
|
+
util_test :zero?, :blockdev => true,
|
|
357
|
+
:chardev => true,
|
|
358
|
+
:directory => false,
|
|
359
|
+
:empty => true,
|
|
360
|
+
:full => false,
|
|
361
|
+
:nonexistent => false,
|
|
362
|
+
:pipe => true,
|
|
363
|
+
:setgid => false,
|
|
364
|
+
:setuid => false,
|
|
365
|
+
:socket => true,
|
|
366
|
+
:sticky_dir => false,
|
|
367
|
+
:symlink => true
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
require 'test/unit' if $0 == __FILE__
|