oktest 1.3.1 → 1.5.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 +4 -4
- data/README.md +156 -18
- data/Rakefile.rb +1 -1
- data/benchmark/run_all.rb +1 -0
- data/bin/oktest +3 -0
- data/lib/oktest.rb +253 -143
- data/oktest.gemspec +4 -3
- data/test/{run_all.rb → all.rb} +1 -0
- data/test/assertion_test.rb +244 -229
- data/test/filter_test.rb +123 -120
- data/test/fixture_test.rb +34 -32
- data/test/generator_test.rb +26 -22
- data/test/helper_test.rb +382 -204
- data/test/init.rb +44 -0
- data/test/mainapp_test.rb +249 -199
- data/test/matcher_test.rb +157 -126
- data/test/misc_test.rb +32 -30
- data/test/nanot.rb +307 -0
- data/test/node_test.rb +321 -242
- data/test/reporter_test.rb +250 -208
- data/test/runner_test.rb +102 -100
- data/test/util_test.rb +197 -193
- data/test/utilhelper_test.rb +36 -38
- data/test/visitor_test.rb +55 -50
- metadata +21 -7
- data/test/initialize.rb +0 -21
- data/test/tc.rb +0 -127
data/test/helper_test.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
1
4
|
###
|
2
|
-
### $Release: 1.
|
5
|
+
### $Release: 1.5.0 $
|
3
6
|
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
4
7
|
### $License: MIT License $
|
5
8
|
###
|
6
9
|
|
7
|
-
require_relative './
|
10
|
+
require_relative './init'
|
8
11
|
|
9
12
|
|
10
13
|
class DummyUser
|
@@ -16,83 +19,85 @@ class DummyUser
|
|
16
19
|
end
|
17
20
|
|
18
21
|
|
19
|
-
class
|
20
|
-
|
21
|
-
|
22
|
-
def setup()
|
23
|
-
end
|
22
|
+
class SpecHelper__Test
|
23
|
+
extend NanoTest
|
24
|
+
extend Oktest::SpecHelper
|
24
25
|
|
25
|
-
def
|
26
|
+
def self.test_subject(desc, &b)
|
27
|
+
super
|
28
|
+
ensure
|
26
29
|
Oktest::AssertionObject::NOT_YET.clear()
|
30
|
+
@__at_end_blocks = nil
|
27
31
|
end
|
28
32
|
|
29
|
-
|
30
|
-
|
33
|
+
test_target 'Oktest::SpecHelper#ok()' do
|
34
|
+
test_subject "[!3jhg6] creates new assertion object." do
|
31
35
|
o = ok {"foo"}
|
32
|
-
|
33
|
-
|
34
|
-
|
36
|
+
test_eq? o.class, Oktest::AssertionObject
|
37
|
+
test_eq? o.actual, "foo"
|
38
|
+
test_eq? o.bool, true
|
35
39
|
end
|
36
|
-
|
40
|
+
test_subject "[!bc3l2] records invoked location." do
|
37
41
|
lineno = __LINE__ + 1
|
38
42
|
o = ok {"bar"}
|
39
|
-
|
43
|
+
test_ok? o.location.to_s.start_with?("#{__FILE__}:#{lineno}:")
|
40
44
|
end
|
41
|
-
|
45
|
+
test_subject "[!mqtdy] not record invoked location when `Config.ok_location == false`." do
|
42
46
|
bkup = Oktest::Config.ok_location
|
43
47
|
begin
|
44
48
|
Oktest::Config.ok_location = false
|
45
49
|
o = ok {"bar"}
|
46
|
-
|
50
|
+
test_eq? o.location, nil
|
47
51
|
ensure
|
48
52
|
Oktest::Config.ok_location = bkup
|
49
53
|
end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
|
53
|
-
|
54
|
-
|
57
|
+
test_target 'Oktest::SpecHelper#not_ok()' do
|
58
|
+
test_subject "[!d332o] creates new assertion object for negative condition." do
|
55
59
|
o = not_ok {"abc"}
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
test_eq? o.class, Oktest::AssertionObject
|
61
|
+
test_eq? o.actual, "abc"
|
62
|
+
test_eq? o.bool, false
|
59
63
|
end
|
60
|
-
|
64
|
+
test_subject "[!agmx8] records invoked location." do
|
61
65
|
lineno = __LINE__ + 1
|
62
66
|
o = not_ok {"bar"}
|
63
|
-
|
67
|
+
test_ok? o.location.to_s.start_with?("#{__FILE__}:#{lineno}:")
|
64
68
|
end
|
65
|
-
|
69
|
+
test_subject "[!a9508] not record invoked location when `Config.ok_location == false`." do
|
66
70
|
bkup = Oktest::Config.ok_location
|
67
71
|
begin
|
68
72
|
Oktest::Config.ok_location = false
|
69
73
|
o = not_ok {"bar"}
|
70
|
-
|
74
|
+
test_eq? o.location, nil
|
71
75
|
ensure
|
72
76
|
Oktest::Config.ok_location = bkup
|
73
77
|
end
|
74
78
|
end
|
75
79
|
end
|
76
80
|
|
77
|
-
|
78
|
-
|
79
|
-
|
81
|
+
test_target 'Oktest::SpecHelper#skip_when()' do
|
82
|
+
test_subject "[!3xqf4] raises SkipException if condition is truthy." do
|
83
|
+
exc = test_exception? Oktest::SkipException do
|
80
84
|
skip_when (1+1 == 2), "..reason.."
|
81
85
|
end
|
86
|
+
test_eq? exc.message, "..reason.."
|
82
87
|
end
|
83
|
-
|
88
|
+
test_subject "[!r7cxx] not raise nothing if condition is falsy." do
|
84
89
|
begin
|
85
90
|
skip_when (1+1 == 0), "..reason.."
|
86
91
|
rescue Exception => exc
|
87
|
-
|
92
|
+
test_ok? false, "nothing should be raised but #{exc.class} raised"
|
88
93
|
else
|
89
|
-
|
94
|
+
test_ok? true, msg: "OK"
|
90
95
|
end
|
91
96
|
end
|
92
97
|
end
|
93
98
|
|
94
|
-
|
95
|
-
|
99
|
+
test_target 'Oktest::SpecHelper#fixture()' do
|
100
|
+
test_subject "[!m4ava] calls fixture block and returns result of it." do
|
96
101
|
val = nil
|
97
102
|
Oktest.scope() do
|
98
103
|
topic 'Example' do
|
@@ -102,10 +107,10 @@ class SpecHelper_TC < TC
|
|
102
107
|
end
|
103
108
|
end
|
104
109
|
end
|
105
|
-
|
106
|
-
|
110
|
+
capture_output! { Oktest.run() }
|
111
|
+
test_eq? val, "<<foo>>"
|
107
112
|
end
|
108
|
-
|
113
|
+
test_subject "[!zgfg9] finds fixture block in current or parent node." do
|
109
114
|
val1 = val2 = val3 = nil
|
110
115
|
Oktest.scope() do
|
111
116
|
fixture :foo do "<<foo>>" end
|
@@ -121,12 +126,12 @@ class SpecHelper_TC < TC
|
|
121
126
|
end
|
122
127
|
end
|
123
128
|
end
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
capture_output! { Oktest.run() }
|
130
|
+
test_eq? val1, "<<baz>>"
|
131
|
+
test_eq? val2, "<<bar>>"
|
132
|
+
test_eq? val3, "<<foo>>"
|
128
133
|
end
|
129
|
-
|
134
|
+
test_subject "[!l2mcx] accepts block arguments." do
|
130
135
|
val = nil
|
131
136
|
Oktest.scope() do
|
132
137
|
fixture :foo do |x, y, z: 0|
|
@@ -138,10 +143,10 @@ class SpecHelper_TC < TC
|
|
138
143
|
end
|
139
144
|
end
|
140
145
|
end
|
141
|
-
|
142
|
-
|
146
|
+
capture_output! { Oktest.run() }
|
147
|
+
test_eq? val, {x: 10, y: 20, z: 30}
|
143
148
|
end
|
144
|
-
|
149
|
+
test_subject "[!wxcsp] raises error when fixture not found." do
|
145
150
|
exc = nil
|
146
151
|
Oktest.scope() do
|
147
152
|
fixture :foo do "<<foo>>" end
|
@@ -154,14 +159,14 @@ class SpecHelper_TC < TC
|
|
154
159
|
end
|
155
160
|
end
|
156
161
|
end
|
157
|
-
|
158
|
-
|
159
|
-
|
162
|
+
capture_output! { Oktest.run() }
|
163
|
+
test_eq? exc.class, Oktest::FixtureNotFoundError
|
164
|
+
test_eq? exc.message, "`:bar`: fixture not found."
|
160
165
|
end
|
161
166
|
end
|
162
167
|
|
163
|
-
|
164
|
-
|
168
|
+
test_target 'Oktest::SpecHelper#at_end()' do
|
169
|
+
test_subject "[!x58eo] records clean-up block." do
|
165
170
|
Oktest.scope() do
|
166
171
|
topic 'Example' do
|
167
172
|
spec 'sample #1' do
|
@@ -171,173 +176,346 @@ class SpecHelper_TC < TC
|
|
171
176
|
end
|
172
177
|
end
|
173
178
|
end
|
174
|
-
sout, serr =
|
179
|
+
sout, serr = capture_output! { Oktest.run() }
|
175
180
|
expected = <<'END'
|
176
181
|
before at_end()
|
177
182
|
after at_end()
|
178
183
|
in at_end()
|
179
184
|
END
|
180
|
-
|
185
|
+
test_ok? sout.include?(expected), msg: "not matched"
|
181
186
|
end
|
182
187
|
end
|
183
188
|
|
184
|
-
|
185
|
-
|
186
|
-
sout, serr =
|
189
|
+
test_target 'Oktest::SpecHelper#capture_stdio()' do
|
190
|
+
test_subject "[!1kbnj] captures $stdio and $stderr." do
|
191
|
+
sout, serr = capture_stdio() do
|
187
192
|
puts "fooo"
|
188
193
|
$stderr.puts "baaa"
|
189
194
|
end
|
190
|
-
|
191
|
-
|
195
|
+
test_eq? sout, "fooo\n"
|
196
|
+
test_eq? serr, "baaa\n"
|
192
197
|
end
|
193
|
-
|
198
|
+
test_subject "[!53mai] takes $stdin data." do
|
194
199
|
data = nil
|
195
|
-
sout, serr =
|
200
|
+
sout, serr = capture_stdio("blabla") do
|
196
201
|
data = $stdin.read()
|
197
202
|
end
|
198
203
|
data = "blabla"
|
199
204
|
end
|
200
|
-
|
205
|
+
test_subject "[!wq8a9] recovers stdio even when exception raised." do
|
201
206
|
stdin_, stdout_, stderr_ = $stdin, $stdout, $stderr
|
202
207
|
exception = nil
|
203
208
|
begin
|
204
|
-
sout, serr =
|
209
|
+
sout, serr = capture_stdio() do
|
205
210
|
puts "fooo"
|
206
211
|
$stderr.puts "baaa"
|
207
|
-
|
208
|
-
|
209
|
-
|
212
|
+
test_ok? stdin_ != $stdin , msg: "stdin should be replaced"
|
213
|
+
test_ok? stdout_ != $stdout, msg: "stdout should be replaced"
|
214
|
+
test_ok? stderr_ != $stderr, msg: "stderr should be replaced"
|
210
215
|
1/0 # ZeroDivisionError
|
211
216
|
end
|
212
217
|
rescue ZeroDivisionError => exc
|
213
218
|
exception = exc
|
214
219
|
end
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
end
|
221
|
-
|
222
|
-
sout, serr =
|
220
|
+
test_ok? exception != nil, msg: "exception should be raised."
|
221
|
+
test_ok? exception.is_a?(ZeroDivisionError), msg: "ZeroDivisionError should be raised."
|
222
|
+
test_ok? stdin_ == $stdin , msg: "stdin should be recovered"
|
223
|
+
test_ok? stdout_ == $stdout, msg: "stdout should be recovered"
|
224
|
+
test_ok? stderr_ == $stderr, msg: "stderr should be recovered"
|
225
|
+
end
|
226
|
+
test_subject "[!4j494] returns outpouts of stdout and stderr." do
|
227
|
+
sout, serr = capture_stdio() do
|
223
228
|
puts "foo"
|
224
229
|
$stderr.puts "bar"
|
225
230
|
end
|
226
|
-
|
227
|
-
|
231
|
+
test_eq? sout, "foo\n"
|
232
|
+
test_eq? serr, "bar\n"
|
233
|
+
end
|
234
|
+
test_subject "[!6ik8b] can simulate tty." do
|
235
|
+
sout, serr = capture_stdio() do
|
236
|
+
test_eq? $stdin.tty?, false
|
237
|
+
test_eq? $stdout.tty?, false
|
238
|
+
test_eq? $stderr.tty?, false
|
239
|
+
end
|
240
|
+
#
|
241
|
+
sout, serr = capture_stdio(tty: true) do
|
242
|
+
test_eq? $stdin.tty?, true
|
243
|
+
test_eq? $stdout.tty?, true
|
244
|
+
test_eq? $stderr.tty?, true
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
test_target 'Oktest::SpecHelper#capture_sio()' do
|
250
|
+
test_subject "[!qjmaa] 'capture_sio()' is an alias of 'capture_stdio()'." do
|
251
|
+
sin = nil
|
252
|
+
sout, serr = capture_sio("INPUT", tty: true) do
|
253
|
+
sin = $stdin.read()
|
254
|
+
puts "OUTPUT"
|
255
|
+
$stderr.puts "ERROR"
|
256
|
+
test_eq? $stdin.tty?, true
|
257
|
+
test_eq? $stdout.tty?, true
|
258
|
+
test_eq? $stdout.tty?, true
|
259
|
+
end
|
260
|
+
test_eq? sin, "INPUT"
|
261
|
+
test_eq? sout, "OUTPUT\n"
|
262
|
+
test_eq? serr, "ERROR\n"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
test_target 'Oktest::SpecHelper#capture_stdout()' do
|
267
|
+
test_subject "[!4agii] same as `sout, serr = capture_stdio(); ok {serr} == ''`." do
|
268
|
+
sin = nil
|
269
|
+
sout = capture_stdout("INPUT", tty: true) do
|
270
|
+
sin = $stdin.read()
|
271
|
+
puts "OUTPUT"
|
272
|
+
test_eq? $stdin.tty?, true
|
273
|
+
test_eq? $stdout.tty?, true
|
274
|
+
test_eq? $stderr.tty?, true
|
275
|
+
end
|
276
|
+
test_eq? sin, "INPUT"
|
277
|
+
test_eq? sout, "OUTPUT\n"
|
278
|
+
end
|
279
|
+
test_subject "[!may84] fails when stderr is not empty." do
|
280
|
+
exc = test_exception? Oktest::AssertionFailed do
|
281
|
+
capture_stdout() do
|
282
|
+
$stderr.print "ERROR"
|
283
|
+
end
|
284
|
+
end
|
285
|
+
test_eq? exc.message, "Output of $stderr expected to be empty, but got: \"ERROR\""
|
286
|
+
end
|
287
|
+
test_subject "[!5n04e] returns output of stdout." do
|
288
|
+
sout = capture_stdout() do
|
289
|
+
print "OUTPUT"
|
290
|
+
end
|
291
|
+
test_eq? sout, "OUTPUT"
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
test_target 'Oktest::SpecHelper#capture_stderr()' do
|
296
|
+
test_subject "[!46tj4] same as `sout, serr = capture_stdio(); ok {sout} == ''`." do
|
297
|
+
sin = nil
|
298
|
+
serr = capture_stderr("INPUT", tty: true) do
|
299
|
+
sin = $stdin.read()
|
300
|
+
$stderr.puts "ERROR"
|
301
|
+
test_eq? $stdin.tty?, true
|
302
|
+
test_eq? $stdout.tty?, true
|
303
|
+
test_eq? $stderr.tty?, true
|
304
|
+
end
|
305
|
+
test_eq? sin, "INPUT"
|
306
|
+
test_eq? serr, "ERROR\n"
|
307
|
+
end
|
308
|
+
test_subject "[!3zh32] fails when stdout is not empty." do
|
309
|
+
exc = test_exception? Oktest::AssertionFailed do
|
310
|
+
capture_stderr() do
|
311
|
+
print "OUTPUT"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
test_eq? exc.message, "Output of $stdout expected to be empty, but got: \"OUTPUT\""
|
315
|
+
end
|
316
|
+
test_subject "[!5vs64] returns output of stderr." do
|
317
|
+
serr = capture_stderr() do
|
318
|
+
$stderr.print "ERROR"
|
319
|
+
end
|
320
|
+
test_eq? serr, "ERROR"
|
228
321
|
end
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
322
|
+
end
|
323
|
+
|
324
|
+
test_target 'Oktest::SpecHelper#capture_command()' do
|
325
|
+
test_subject "[!wyp17] executes command with stdin data." do
|
326
|
+
sout, serr = capture_command("cat -n", "AAA\nBBB\n")
|
327
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
328
|
+
test_eq? serr, ""
|
329
|
+
end
|
330
|
+
test_subject "[!jd63p] raises error if command failed." do
|
331
|
+
begin
|
332
|
+
capture_command("ls *not*exist*")
|
333
|
+
rescue => exc
|
334
|
+
test_eq? exc.class, RuntimeError
|
335
|
+
test_eq? exc.message, "Command failed with status (1): `ls *not*exist*`"
|
336
|
+
else
|
337
|
+
test_ok? false, msg: "Exception should be raised but not."
|
234
338
|
end
|
339
|
+
end
|
340
|
+
test_subject "[!lsmgq] calls error handler block if command failed." do
|
341
|
+
called = nil
|
342
|
+
sout, serr = capture_command("ls *not*exist*") do |pstat|
|
343
|
+
called = pstat
|
344
|
+
end
|
345
|
+
test_ok? called.is_a?(Process::Status)
|
346
|
+
test_ok? called.exitstatus == 1
|
347
|
+
test_eq? sout, ""
|
348
|
+
test_eq? serr, "ls: *not*exist*: No such file or directory\n"
|
349
|
+
end
|
350
|
+
test_subject "[!vivq3] doesn't call error handler block if command finished successfully." do
|
351
|
+
called = false
|
352
|
+
sout, serr = capture_command("cat -n", "AAA\nBBB\n") do
|
353
|
+
called = true
|
354
|
+
end
|
355
|
+
test_eq? called, false
|
356
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
357
|
+
test_eq? serr, ""
|
358
|
+
end
|
359
|
+
test_subject "[!nxw59] not raise error if command failed and error handler specified." do
|
360
|
+
begin
|
361
|
+
sout, serr = capture_command("ls *not*exist*") do end
|
362
|
+
rescue => exc
|
363
|
+
test_ok? false, msg: "Exception should not raised, but raised #{exc.inspect}"
|
364
|
+
end
|
365
|
+
test_eq? sout, ""
|
366
|
+
test_eq? serr, "ls: *not*exist*: No such file or directory\n"
|
367
|
+
end
|
368
|
+
test_subject "[!h5994] returns output of stdin and stderr." do
|
369
|
+
sout, serr = capture_command("cat -n", "AAA\nBBB\n")
|
370
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
371
|
+
test_eq? serr, ""
|
235
372
|
#
|
236
|
-
sout, serr =
|
237
|
-
|
238
|
-
|
239
|
-
|
373
|
+
sout, serr = capture_command("echo ERR >&2")
|
374
|
+
test_eq? sout, ""
|
375
|
+
test_eq? serr, "ERR\n"
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
test_target 'Oktest::SpecHelper#capture_command!()' do
|
380
|
+
test_subject "[!vlbpo] executes command with stdin data." do
|
381
|
+
sout, serr = capture_command!("cat -n", "AAA\nBBB\n")
|
382
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
383
|
+
test_eq? serr, ""
|
384
|
+
end
|
385
|
+
test_subject "[!yfohb] not raise error even if command failed." do
|
386
|
+
sout, serr = capture_command!("ls *not*exist*")
|
387
|
+
test_eq? sout, ""
|
388
|
+
test_eq? serr, "ls: *not*exist*: No such file or directory\n"
|
389
|
+
end
|
390
|
+
test_subject "[!andyj] calls error handler block if command failed." do
|
391
|
+
called = nil
|
392
|
+
sout, serr = capture_command!("ls *not*exist*") do |pstat|
|
393
|
+
called = pstat
|
240
394
|
end
|
395
|
+
test_ok? called.is_a?(Process::Status)
|
396
|
+
test_ok? called.exitstatus == 1
|
397
|
+
test_eq? sout, ""
|
398
|
+
test_eq? serr, "ls: *not*exist*: No such file or directory\n"
|
399
|
+
end
|
400
|
+
test_subject "[!xnkqc] doesn't call error handler block if command finished successfully." do
|
401
|
+
called = false
|
402
|
+
sout, serr = capture_command!("cat -n", "AAA\nBBB\n") do
|
403
|
+
called = true
|
404
|
+
end
|
405
|
+
test_eq? called, false
|
406
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
407
|
+
test_eq? serr, ""
|
408
|
+
end
|
409
|
+
test_subject "[!3xdgo] returns output of stdin and stderr." do
|
410
|
+
sout, serr = capture_command!("cat -n", "AAA\nBBB\n")
|
411
|
+
test_eq? sout, " 1\tAAA\n 2\tBBB\n"
|
412
|
+
test_eq? serr, ""
|
413
|
+
#
|
414
|
+
sout, serr = capture_command!("echo ERR >&2")
|
415
|
+
test_eq? sout, ""
|
416
|
+
test_eq? serr, "ERR\n"
|
241
417
|
end
|
242
418
|
end
|
243
419
|
|
244
|
-
|
245
|
-
|
420
|
+
test_target 'Oktest::SpecHelper#dummy_file()' do
|
421
|
+
test_subject "[!7e0bo] creates dummy file." do
|
246
422
|
tmpfile = "_tmp_3511.txt"
|
247
423
|
File.unlink(tmpfile) if File.exist?(tmpfile)
|
248
424
|
begin
|
249
425
|
dummy_file(tmpfile, "foobar")
|
250
|
-
|
251
|
-
|
426
|
+
test_ok? File.exist?(tmpfile), msg: "tmpfile should be created."
|
427
|
+
test_eq? @__at_end_blocks.length, 1
|
252
428
|
pr = @__at_end_blocks.pop()
|
253
429
|
pr.call()
|
254
|
-
|
430
|
+
test_ok? !File.exist?(tmpfile), msg: "tmpfile should be removed."
|
255
431
|
ensure
|
256
432
|
File.unlink(tmpfile) if File.exist?(tmpfile)
|
257
433
|
end
|
258
434
|
end
|
259
|
-
|
435
|
+
test_subject "[!yvfxq] raises error when dummy file already exists." do
|
260
436
|
tmp = "_tmp_4883.txt"
|
261
437
|
[true, false].each do |flag|
|
262
438
|
begin
|
263
439
|
flag ? File.write(tmp, "") : Dir.mkdir(tmp)
|
264
|
-
|
440
|
+
exc = test_exception? ArgumentError do
|
265
441
|
dummy_file(tmp, "foobar")
|
266
442
|
end
|
443
|
+
test_eq? exc.message, "dummy_file('#{tmp}'): temporary file already exists."
|
267
444
|
ensure
|
268
445
|
File.unlink(tmp) if File.file?(tmp)
|
269
446
|
Dir.rmdir(tmp) if File.directory?(tmp)
|
270
447
|
end
|
271
448
|
end
|
272
449
|
end
|
273
|
-
|
450
|
+
test_subject "[!nvlkq] returns filename." do
|
274
451
|
tmpfile = "_tmp_4947.txt"
|
275
452
|
begin
|
276
453
|
ret = dummy_file(tmpfile, "foobar")
|
277
|
-
|
454
|
+
test_eq? ret, tmpfile
|
278
455
|
ensure
|
279
456
|
File.unlink(tmpfile) if File.exist?(tmpfile)
|
280
457
|
end
|
281
458
|
end
|
282
|
-
|
459
|
+
test_subject "[!3mg26] generates temporary filename if 1st arg is nil." do
|
283
460
|
begin
|
284
461
|
tmpfile1 = dummy_file(nil, "foobar")
|
285
462
|
tmpfile2 = dummy_file(nil, "foobar")
|
286
|
-
|
287
|
-
|
288
|
-
|
463
|
+
test_ok? tmpfile1 =~ /^_tmpfile_\d{6}/, msg: "tempoary filename should be generated."
|
464
|
+
test_ok? tmpfile2 =~ /^_tmpfile_\d{6}/, msg: "tempoary filename should be generated."
|
465
|
+
test_ok? tmpfile1 != tmpfile2, msg: "tempoary filename should contain random number."
|
289
466
|
ensure
|
290
467
|
File.unlink(tmpfile1) if File.exist?(tmpfile1)
|
291
468
|
File.unlink(tmpfile2) if File.exist?(tmpfile2)
|
292
469
|
end
|
293
470
|
end
|
294
|
-
|
471
|
+
test_subject "[!ky7nh] can take block argument." do
|
295
472
|
tmpfile = "_tmp_9080"
|
296
473
|
begin
|
297
474
|
ret = dummy_file(tmpfile) do |filename|
|
298
|
-
|
299
|
-
|
475
|
+
test_eq? filename, tmpfile
|
476
|
+
test_ok? File.file?(tmpfile), msg: "tmpfile should be created."
|
300
477
|
1234
|
301
478
|
end
|
302
|
-
|
303
|
-
|
304
|
-
|
479
|
+
test_ok? !File.file?(tmpfile), msg: "tmpfile should be removed."
|
480
|
+
test_eq? ret, 1234
|
481
|
+
test_eq? @__at_end_blocks, nil
|
305
482
|
ensure
|
306
483
|
File.unlink(tmpfile) if File.exist?(tmpfile)
|
307
484
|
end
|
308
485
|
end
|
309
486
|
end
|
310
487
|
|
311
|
-
|
312
|
-
|
488
|
+
test_target 'Oktest::SpecHelper#dummy_dir()' do
|
489
|
+
test_subject "[!l34d5] creates dummy directory." do
|
313
490
|
tmpdir = "_tmpdir_7903"
|
314
491
|
Dir.rmdir(tmpdir) if File.exist?(tmpdir)
|
315
492
|
begin
|
316
493
|
dummy_dir(tmpdir)
|
317
|
-
|
318
|
-
|
494
|
+
test_ok? File.exist?(tmpdir), msg: "tmpdir should be created."
|
495
|
+
test_eq? @__at_end_blocks.length, 1
|
319
496
|
pr = @__at_end_blocks.pop()
|
320
497
|
pr.call()
|
321
|
-
|
498
|
+
test_ok? !File.exist?(tmpdir), msg: "tmpdir should be removed."
|
322
499
|
ensure
|
323
500
|
Dir.rmdir(tmpdir) if File.exist?(tmpdir)
|
324
501
|
end
|
325
502
|
end
|
326
|
-
|
503
|
+
test_subject "[!zypj6] raises error when dummy dir already exists." do
|
327
504
|
tmp = "_tmpdir_1062"
|
328
505
|
[true, false].each do |flag|
|
329
506
|
begin
|
330
507
|
flag ? Dir.mkdir(tmp) : File.write(tmp, "")
|
331
|
-
|
508
|
+
exc = test_exception? ArgumentError do
|
332
509
|
dummy_dir(tmp)
|
333
510
|
end
|
511
|
+
test_eq? exc.message, "dummy_dir('#{tmp}'): temporary directory already exists."
|
334
512
|
ensure
|
335
513
|
Dir.rmdir(tmp) if File.directory?(tmp)
|
336
514
|
File.unlink(tmp) if File.file?(tmp)
|
337
515
|
end
|
338
516
|
end
|
339
517
|
end
|
340
|
-
|
518
|
+
test_subject "[!01gt7] removes dummy directory even if test_subject contains other files." do
|
341
519
|
tmpdir = "_tmpdir_3869"
|
342
520
|
begin
|
343
521
|
dummy_dir(tmpdir)
|
@@ -345,197 +523,197 @@ END
|
|
345
523
|
Dir.mkdir("#{tmpdir}/d1")
|
346
524
|
Dir.mkdir("#{tmpdir}/d1/d2")
|
347
525
|
File.write("#{tmpdir}/d1/d2/bar.txt", "barbar", encoding: 'utf-8')
|
348
|
-
|
349
|
-
|
526
|
+
test_ok? File.exist?("#{tmpdir}/foo.txt"), msg: "should exists."
|
527
|
+
test_ok? File.exist?("#{tmpdir}/d1/d2/bar.txt"), msg: "should exists."
|
350
528
|
#
|
351
529
|
pr = @__at_end_blocks.pop()
|
352
530
|
pr.call()
|
353
|
-
|
531
|
+
test_ok? !File.exist?(tmpdir), msg: "tmpdir should be removed."
|
354
532
|
ensure
|
355
533
|
FileUtils.rm_rf(tmpdir) if File.exist?(tmpdir)
|
356
534
|
end
|
357
535
|
end
|
358
|
-
|
536
|
+
test_subject "[!jxh30] returns directory name." do
|
359
537
|
tmpdir = "_tmpdir_2546"
|
360
538
|
begin
|
361
539
|
ret = dummy_dir(tmpdir)
|
362
|
-
|
540
|
+
test_eq? ret, tmpdir
|
363
541
|
ensure
|
364
542
|
Dir.rmdir(tmpdir) if File.exist?(tmpdir)
|
365
543
|
end
|
366
544
|
end
|
367
|
-
|
545
|
+
test_subject "[!r14uy] generates temporary directory name if 1st arg is nil." do
|
368
546
|
begin
|
369
547
|
tmpdir1 = dummy_dir(nil)
|
370
548
|
tmpdir2 = dummy_dir()
|
371
|
-
|
372
|
-
|
373
|
-
|
549
|
+
test_ok? tmpdir1 =~ /^_tmpdir_\d{6}/, msg: "tempoary directory name should be generated."
|
550
|
+
test_ok? tmpdir2 =~ /^_tmpdir_\d{6}/, msg: "tempoary directory name should be generated."
|
551
|
+
test_ok? tmpdir1 != tmpdir2, msg: "tempoary directory name should contain random number."
|
374
552
|
ensure
|
375
553
|
Dir.rmdir(tmpdir1) if File.exist?(tmpdir1)
|
376
554
|
Dir.rmdir(tmpdir2) if File.exist?(tmpdir2)
|
377
555
|
end
|
378
556
|
end
|
379
|
-
|
557
|
+
test_subject "[!tfsqo] can take block argument." do
|
380
558
|
tmpdir = "_tmp_5799"
|
381
559
|
begin
|
382
560
|
ret = dummy_dir(tmpdir) do |dirname|
|
383
|
-
|
384
|
-
|
561
|
+
test_eq? dirname, tmpdir
|
562
|
+
test_ok? File.directory?(tmpdir), msg: "tmpdir should be created."
|
385
563
|
2345
|
386
564
|
end
|
387
|
-
|
388
|
-
|
389
|
-
|
565
|
+
test_ok? !File.directory?(tmpdir), msg: "tmpdir should be removed."
|
566
|
+
test_eq? ret, 2345
|
567
|
+
test_eq? @__at_end_blocks, nil
|
390
568
|
ensure
|
391
569
|
Dir.rmdir(tmpdir) if File.exist?(tmpdir)
|
392
570
|
end
|
393
571
|
end
|
394
572
|
end
|
395
573
|
|
396
|
-
|
397
|
-
|
574
|
+
test_target 'Oktest::SpecHelper#dummy_values()' do
|
575
|
+
test_subject "[!hgwg2] changes hash value temporarily." do
|
398
576
|
hashobj = {:a=>10, 'b'=>20, :c=>30}
|
399
577
|
dummy_values(hashobj, :a=>1000, 'b'=>2000, :x=>9000)
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
578
|
+
test_eq? hashobj[:a], 1000
|
579
|
+
test_eq? hashobj['b'], 2000
|
580
|
+
test_eq? hashobj[:c], 30
|
581
|
+
test_eq? hashobj[:x], 9000
|
404
582
|
end
|
405
|
-
|
583
|
+
test_subject "[!jw2kx] recovers hash values." do
|
406
584
|
hashobj = {:a=>10, 'b'=>20, :c=>30}
|
407
585
|
dummy_values(hashobj, :a=>1000, 'b'=>2000, :x=>9000)
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
586
|
+
test_eq? hashobj[:a], 1000
|
587
|
+
test_eq? hashobj['b'], 2000
|
588
|
+
test_eq? hashobj[:c], 30
|
589
|
+
test_eq? hashobj[:x], 9000
|
590
|
+
test_eq? @__at_end_blocks.length, 1
|
413
591
|
pr = @__at_end_blocks.pop()
|
414
592
|
pr.call()
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
593
|
+
test_eq? hashobj[:a], 10
|
594
|
+
test_eq? hashobj['b'], 20
|
595
|
+
test_eq? hashobj[:c], 30
|
596
|
+
test_ok? !hashobj.key?(:x), msg: "key :x should not exist."
|
419
597
|
end
|
420
|
-
|
598
|
+
test_subject "[!w3r0p] returns keyvals." do
|
421
599
|
hashobj = {:a=>10, 'b'=>20, :c=>30}
|
422
600
|
ret = dummy_values(hashobj, :a=>1000, 'b'=>2000, :x=>9000)
|
423
|
-
|
601
|
+
test_eq? ret, {:a=>1000, 'b'=>2000, :x=>9000}
|
424
602
|
end
|
425
|
-
|
603
|
+
test_subject "[!pwq6v] can take block argument." do
|
426
604
|
hashobj = {:a=>10, 'b'=>20, :c=>30}
|
427
605
|
ret = dummy_values(hashobj, :a=>1000, 'b'=>2000, :x=>9000) do |kvs|
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
606
|
+
test_eq? hashobj[:a], 1000
|
607
|
+
test_eq? hashobj['b'], 2000
|
608
|
+
test_eq? hashobj[:c], 30
|
609
|
+
test_eq? hashobj[:x], 9000
|
610
|
+
test_eq? kvs, {:a=>1000, 'b'=>2000, :x=>9000}
|
433
611
|
5678
|
434
612
|
end
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
613
|
+
test_eq? ret, 5678
|
614
|
+
test_eq? hashobj[:a], 10
|
615
|
+
test_eq? hashobj['b'], 20
|
616
|
+
test_eq? hashobj[:c], 30
|
617
|
+
test_ok? !hashobj.key?(:x), msg: "key :x should not exist."
|
618
|
+
test_eq? @__at_end_blocks, nil
|
441
619
|
end
|
442
620
|
end
|
443
621
|
|
444
|
-
|
445
|
-
|
622
|
+
test_target 'Oktest::SpecHelper#dummy_attrs()' do
|
623
|
+
test_subject "[!4vd73] changes object attributes temporarily." do
|
446
624
|
obj = DummyUser.new(123, "alice")
|
447
625
|
dummy_attrs(obj, :id=>999, :name=>"bob")
|
448
|
-
|
449
|
-
|
626
|
+
test_eq? obj.id, 999
|
627
|
+
test_eq? obj.name, "bob"
|
450
628
|
end
|
451
|
-
|
629
|
+
test_subject "[!fi0t3] recovers attribute values." do
|
452
630
|
obj = DummyUser.new(123, "alice")
|
453
631
|
dummy_attrs(obj, :id=>999, :name=>"bob")
|
454
|
-
|
455
|
-
|
632
|
+
test_eq? obj.id, 999
|
633
|
+
test_eq? obj.name, "bob"
|
456
634
|
#
|
457
|
-
|
635
|
+
test_eq? @__at_end_blocks.length, 1
|
458
636
|
pr = @__at_end_blocks.pop()
|
459
637
|
pr.call()
|
460
|
-
|
461
|
-
|
638
|
+
test_eq? obj.id, 123
|
639
|
+
test_eq? obj.name, "alice"
|
462
640
|
end
|
463
|
-
|
641
|
+
test_subject "[!27yeh] returns keyvals." do
|
464
642
|
obj = DummyUser.new(123, "alice")
|
465
643
|
ret = dummy_attrs(obj, :id=>789, :name=>"charlie")
|
466
|
-
|
644
|
+
test_eq? ret, {:id=>789, :name=>"charlie"}
|
467
645
|
end
|
468
|
-
|
646
|
+
test_subject "[!j7tvp] can take block argument." do
|
469
647
|
obj = DummyUser.new(123, "alice")
|
470
648
|
ret = dummy_attrs(obj, :id=>888, :name=>"dave") do |kvs|
|
471
|
-
|
472
|
-
|
473
|
-
|
649
|
+
test_eq? obj.id, 888
|
650
|
+
test_eq? obj.name, "dave"
|
651
|
+
test_eq? kvs, {:id=>888, :name=>"dave"}
|
474
652
|
4567
|
475
653
|
end
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
654
|
+
test_eq? ret, 4567
|
655
|
+
test_eq? obj.id, 123
|
656
|
+
test_eq? obj.name, "alice"
|
657
|
+
test_eq? @__at_end_blocks, nil
|
480
658
|
end
|
481
659
|
end
|
482
660
|
|
483
|
-
|
484
|
-
|
661
|
+
test_target 'Oktest::SpecHelper#dummy_ivars()' do
|
662
|
+
test_subject "[!rnqiv] changes instance variables temporarily." do
|
485
663
|
obj = DummyUser.new(123, "alice")
|
486
664
|
dummy_ivars(obj, :id=>999, :name=>"bob")
|
487
|
-
|
488
|
-
|
665
|
+
test_eq? obj.instance_variable_get('@id'), 999
|
666
|
+
test_eq? obj.instance_variable_get('@name'), "bob"
|
489
667
|
end
|
490
|
-
|
668
|
+
test_subject "[!8oirn] recovers instance variables." do
|
491
669
|
obj = DummyUser.new(123, "alice")
|
492
670
|
dummy_ivars(obj, :id=>999, :name=>"bob")
|
493
|
-
|
494
|
-
|
671
|
+
test_eq? obj.instance_variable_get('@id'), 999
|
672
|
+
test_eq? obj.instance_variable_get('@name'), "bob"
|
495
673
|
#
|
496
|
-
|
674
|
+
test_eq? @__at_end_blocks.length, 1
|
497
675
|
pr = @__at_end_blocks.pop()
|
498
676
|
pr.call()
|
499
|
-
|
500
|
-
|
677
|
+
test_eq? obj.instance_variable_get('@id'), 123
|
678
|
+
test_eq? obj.instance_variable_get('@name'), "alice"
|
501
679
|
end
|
502
|
-
|
680
|
+
test_subject "[!01dc8] returns keyvals." do
|
503
681
|
obj = DummyUser.new(123, "alice")
|
504
682
|
ret = dummy_ivars(obj, :id=>789, :name=>"charlie")
|
505
|
-
|
683
|
+
test_eq? ret, {:id=>789, :name=>"charlie"}
|
506
684
|
end
|
507
|
-
|
685
|
+
test_subject "[!myzk4] can take block argument." do
|
508
686
|
obj = DummyUser.new(123, "alice")
|
509
687
|
ret = dummy_attrs(obj, :id=>888, :name=>"dave") do |kvs|
|
510
|
-
|
511
|
-
|
512
|
-
|
688
|
+
test_eq? obj.instance_variable_get('@id'), 888
|
689
|
+
test_eq? obj.instance_variable_get('@name'), "dave"
|
690
|
+
test_eq? kvs, {:id=>888, :name=>"dave"}
|
513
691
|
4567
|
514
692
|
end
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
693
|
+
test_eq? ret, 4567
|
694
|
+
test_eq? obj.id, 123
|
695
|
+
test_eq? obj.name, "alice"
|
696
|
+
test_eq? @__at_end_blocks, nil
|
519
697
|
end
|
520
698
|
end
|
521
699
|
|
522
|
-
|
523
|
-
|
700
|
+
test_target 'Oktest::SpecHelper#recorder()' do
|
701
|
+
test_subject "[!qwrr8] loads 'benry/recorder' automatically." do
|
524
702
|
if defined?(Benry::Recorder)
|
525
703
|
$stderr.puts "** skip because 'benry/recorder' already loaded."
|
526
704
|
else
|
527
|
-
|
705
|
+
test_ok? !defined? Benry::Recorder, msg: "should not be loaded."
|
528
706
|
recorder()
|
529
|
-
|
707
|
+
test_ok? !!defined? Benry::Recorder, msg: "should be loaded."
|
530
708
|
end
|
531
709
|
end
|
532
|
-
|
710
|
+
test_subject "[!glfvx] creates Benry::Recorder object." do
|
533
711
|
rec = recorder()
|
534
|
-
|
712
|
+
test_ok? rec.is_a?(Benry::Recorder)
|
535
713
|
o = rec.fake_object(:foo=>123)
|
536
|
-
|
537
|
-
|
538
|
-
|
714
|
+
test_eq? o.foo(), 123
|
715
|
+
test_eq? rec[0].name, :foo
|
716
|
+
test_eq? rec[0].obj, o
|
539
717
|
end
|
540
718
|
end
|
541
719
|
|