oktest 1.4.0 → 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 +42 -5
- data/Rakefile.rb +1 -1
- data/lib/oktest.rb +32 -9
- data/oktest.gemspec +3 -3
- data/test/assertion_test.rb +229 -227
- data/test/filter_test.rb +122 -120
- data/test/fixture_test.rb +33 -32
- data/test/generator_test.rb +20 -19
- data/test/helper_test.rb +280 -274
- data/test/init.rb +44 -0
- data/test/mainapp_test.rb +194 -190
- data/test/matcher_test.rb +156 -126
- data/test/misc_test.rb +31 -30
- data/test/nanot.rb +307 -0
- data/test/node_test.rb +296 -252
- data/test/reporter_test.rb +249 -208
- data/test/runner_test.rb +101 -100
- data/test/util_test.rb +196 -193
- data/test/utilhelper_test.rb +35 -38
- data/test/visitor_test.rb +54 -50
- metadata +10 -10
- data/test/initialize.rb +0 -22
- data/test/tc.rb +0 -128
- /data/test/{run_all.rb → all.rb} +0 -0
data/test/filter_test.rb
CHANGED
@@ -2,166 +2,168 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
###
|
5
|
-
### $Release: 1.
|
5
|
+
### $Release: 1.5.0 $
|
6
6
|
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
7
7
|
### $License: MIT License $
|
8
8
|
###
|
9
9
|
|
10
|
-
require_relative './
|
10
|
+
require_relative './init'
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
Object.new.instance_eval do # Oktest::Filter
|
14
|
+
extend NanoTest
|
14
15
|
|
15
|
-
|
16
|
-
def parse_filter_str(str)
|
16
|
+
test_target 'Oktest::Filter.create_from()' do
|
17
|
+
def self.parse_filter_str(str)
|
17
18
|
return Oktest::Filter.create_from(str)
|
18
19
|
end
|
19
|
-
def filter_attrs(ft)
|
20
|
+
def self.filter_attrs(ft)
|
20
21
|
#return ft.topic_pattern, ft.spec_pattern, ft.tag_pattern, ft.negative
|
21
22
|
return ft.instance_eval {
|
22
23
|
[@topic_pattern, @spec_pattern, @tag_pattern, @negative]
|
23
24
|
}
|
24
25
|
end
|
25
26
|
#
|
26
|
-
|
27
|
+
test_subject "[!9dzmg] returns filter object." do
|
27
28
|
ft = parse_filter_str("topic=*pat*")
|
28
|
-
|
29
|
+
test_ok? ft.is_a?(Oktest::Filter), msg: "should be a filter object."
|
29
30
|
end
|
30
|
-
|
31
|
+
test_subject "[!xt364] parses 'topic=...' as filter pattern for topic." do
|
31
32
|
ft = parse_filter_str("topic=*pat*")
|
32
|
-
|
33
|
+
test_eq? filter_attrs(ft), ['*pat*', nil, nil, false]
|
33
34
|
end
|
34
|
-
|
35
|
+
test_subject "[!53ega] parses 'spec=...' as filter pattern for spec." do
|
35
36
|
ft = parse_filter_str("spec=*pat*")
|
36
|
-
|
37
|
+
test_eq? filter_attrs(ft), [nil, '*pat*', nil, false]
|
37
38
|
end
|
38
|
-
|
39
|
+
test_subject "[!go6us] parses 'tag=...' as filter pattern for tag." do
|
39
40
|
ft = parse_filter_str("tag={exp,old}")
|
40
|
-
|
41
|
+
test_eq? filter_attrs(ft), [nil, nil, '{exp,old}', false]
|
41
42
|
end
|
42
|
-
|
43
|
+
test_subject "[!gtpt1] parses 'sid=...' as filter pattern for spec." do
|
43
44
|
ft = parse_filter_str("sid=abc123")
|
44
|
-
|
45
|
+
test_eq? filter_attrs(ft), [nil, '\[!abc123\]*', nil, false]
|
45
46
|
end
|
46
|
-
|
47
|
-
|
47
|
+
test_subject "[!cmp6e] raises ArgumentError when invalid argument." do
|
48
|
+
exc = test_exception? ArgumentError do
|
48
49
|
parse_filter_str("abc123")
|
49
50
|
end
|
51
|
+
test_eq? exc.message, '"abc123": unexpected pattern string.'
|
50
52
|
end
|
51
|
-
|
53
|
+
test_subject "[!5hl7z] parses 'xxx!=...' as negative filter pattern." do
|
52
54
|
ft = parse_filter_str("topic!=*pat*")
|
53
|
-
|
55
|
+
test_eq? filter_attrs(ft), ['*pat*', nil, nil, true]
|
54
56
|
ft = parse_filter_str("spec!=*pat*")
|
55
|
-
|
57
|
+
test_eq? filter_attrs(ft), [nil, '*pat*', nil, true]
|
56
58
|
ft = parse_filter_str("tag!={exp,old}")
|
57
|
-
|
59
|
+
test_eq? filter_attrs(ft), [nil, nil, '{exp,old}', true]
|
58
60
|
ft = parse_filter_str("sid!=abc123")
|
59
|
-
|
61
|
+
test_eq? filter_attrs(ft), [nil, '\[!abc123\]*', nil, true]
|
60
62
|
end
|
61
63
|
end
|
62
64
|
|
63
|
-
def new_filter(topic_pat=nil, spec_pat=nil, tag_pat=nil, negative: false)
|
65
|
+
def self.new_filter(topic_pat=nil, spec_pat=nil, tag_pat=nil, negative: false)
|
64
66
|
ft = Oktest::Filter.new(topic_pat, spec_pat, tag_pat, negative: negative)
|
65
67
|
return ft
|
66
68
|
end
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
+
test_target 'Oktest::Filter#_match?()' do
|
71
|
+
test_subject "[!h90x3] returns true if str matched to pattern." do
|
70
72
|
ft = new_filter()
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
test_eq? ft.instance_eval { _match?('foo', 'foo') }, true
|
74
|
+
test_eq? ft.instance_eval { _match?('foo', 'f*') }, true
|
75
|
+
test_eq? ft.instance_eval { _match?('foo', '*o*') }, true
|
76
|
+
test_eq? ft.instance_eval { _match?('foo', '{foo,bar}') }, true
|
75
77
|
#
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
78
|
+
test_eq? ft.instance_eval { _match?('foo', 'bar') }, false
|
79
|
+
test_eq? ft.instance_eval { _match?('foo', 'F*') }, false
|
80
|
+
test_eq? ft.instance_eval { _match?('foo', '*x*') }, false
|
81
|
+
test_eq? ft.instance_eval { _match?('foo', '{x,y}') }, false
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
83
|
-
|
84
|
-
|
85
|
+
test_target 'Oktest::Filter#_match_tag?()' do
|
86
|
+
test_subject "[!lyo18] returns false if tag is nil." do
|
85
87
|
ft = new_filter()
|
86
|
-
|
88
|
+
test_eq? ft.instance_eval { _match_tag?(nil, '*') }, false
|
87
89
|
end
|
88
|
-
|
90
|
+
test_subject "[!8lxin] returns true if tag matched to pattern." do
|
89
91
|
ft = new_filter()
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
92
|
+
test_eq? ft.instance_eval { _match_tag?('foo', 'foo') }, true
|
93
|
+
test_eq? ft.instance_eval { _match_tag?('foo', 'f*') }, true
|
94
|
+
test_eq? ft.instance_eval { _match_tag?('foo', '*o*') }, true
|
95
|
+
test_eq? ft.instance_eval { _match_tag?('foo', '{foo,bar}') }, true
|
94
96
|
#
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
97
|
+
test_eq? ft.instance_eval { _match_tag?('foo', 'bar') }, false
|
98
|
+
test_eq? ft.instance_eval { _match_tag?('foo', 'F*') }, false
|
99
|
+
test_eq? ft.instance_eval { _match_tag?('foo', '*x*') }, false
|
100
|
+
test_eq? ft.instance_eval { _match_tag?('foo', '{x,y}') }, false
|
99
101
|
end
|
100
|
-
|
102
|
+
test_subject "[!7wxmh] supports multiple tag names." do
|
101
103
|
ft = new_filter()
|
102
104
|
tag = ['foo', 'bar']
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
test_eq? ft.instance_eval { _match_tag?(tag, 'foo') }, true
|
106
|
+
test_eq? ft.instance_eval { _match_tag?(tag, 'f*') }, true
|
107
|
+
test_eq? ft.instance_eval { _match_tag?(tag, '*o*') }, true
|
108
|
+
test_eq? ft.instance_eval { _match_tag?(tag, '{fooooo,bar,baz}') }, true
|
107
109
|
#
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
110
|
+
test_eq? ft.instance_eval { _match_tag?(tag, 'foooo') }, false
|
111
|
+
test_eq? ft.instance_eval { _match_tag?(tag, 'F*') }, false
|
112
|
+
test_eq? ft.instance_eval { _match_tag?(tag, '*x*') }, false
|
113
|
+
test_eq? ft.instance_eval { _match_tag?(tag, '{x,y}') }, false
|
112
114
|
end
|
113
115
|
end
|
114
116
|
|
115
|
-
|
116
|
-
|
117
|
+
test_target 'Oktest::Filter#scope_match?()' do
|
118
|
+
test_subject "[!zkq6r] returns true only if tag name matched to pattern." do
|
117
119
|
sc = Oktest::ScopeNode.new(nil, 'file.rb', tag: 'foo')
|
118
|
-
|
119
|
-
|
120
|
-
|
120
|
+
test_eq? new_filter('*', '*', 'foo').scope_match?(sc), true
|
121
|
+
test_eq? new_filter('*', '*', 'f*' ).scope_match?(sc), true
|
122
|
+
test_eq? new_filter('*', '*', 'x*' ).scope_match?(sc), false
|
121
123
|
#
|
122
124
|
sc = Oktest::ScopeNode.new(nil, 'file.rb', tag: nil)
|
123
|
-
|
124
|
-
|
125
|
+
test_eq? new_filter('*', '*', 'foo').scope_match?(sc), false
|
126
|
+
test_eq? new_filter('*', '*', '*' ).scope_match?(sc), false
|
125
127
|
end
|
126
128
|
end
|
127
129
|
|
128
|
-
|
129
|
-
|
130
|
+
test_target 'Oktest::Filter#topic_match?()' do
|
131
|
+
test_subject "[!jpycj] returns true if topic target name matched to pattern." do
|
130
132
|
to = Oktest::TopicNode.new(nil, Time)
|
131
|
-
|
132
|
-
|
133
|
-
|
133
|
+
test_eq? new_filter('Time' , nil, nil).topic_match?(to), true
|
134
|
+
test_eq? new_filter('*ime*', nil, nil).topic_match?(to), true
|
135
|
+
test_eq? new_filter('*xy*' , nil, nil).topic_match?(to), false
|
134
136
|
end
|
135
|
-
|
137
|
+
test_subject "[!6lfp1] returns true if tag name matched to pattern." do
|
136
138
|
to = Oktest::TopicNode.new(nil, Time, tag: 'foo')
|
137
139
|
[nil, '*bar*'].each do |pat|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
140
|
+
test_eq? new_filter(pat, nil, 'foo' ).topic_match?(to), true
|
141
|
+
test_eq? new_filter(pat, nil, 'f*' ).topic_match?(to), true
|
142
|
+
test_eq? new_filter(pat, nil, '{foo,bar}').topic_match?(to), true
|
143
|
+
test_eq? new_filter(pat, nil, 'fooooo' ).topic_match?(to), false
|
142
144
|
end
|
143
145
|
end
|
144
146
|
end
|
145
147
|
|
146
|
-
|
147
|
-
|
148
|
+
test_target 'Oktest::Filter#spec_match?()' do
|
149
|
+
test_subject "[!k45p3] returns true if spec description matched to pattern." do
|
148
150
|
sp = Oktest::SpecLeaf.new(nil, "sample", tag: 'foo')
|
149
|
-
|
150
|
-
|
151
|
-
|
151
|
+
test_eq? new_filter(nil, 'sample', nil).spec_match?(sp), true
|
152
|
+
test_eq? new_filter(nil, '*samp*', nil).spec_match?(sp), true
|
153
|
+
test_eq? new_filter(nil, '*abc*' , nil).spec_match?(sp), false
|
152
154
|
end
|
153
|
-
|
155
|
+
test_subject "[!li3pd] returns true if tag name matched to pattern." do
|
154
156
|
sp = Oktest::SpecLeaf.new(nil, "sample", tag: 'foo')
|
155
157
|
[nil, '*bar*'].each do |pat|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
158
|
+
test_eq? new_filter(nil, pat, 'foo' ).spec_match?(sp), true
|
159
|
+
test_eq? new_filter(nil, pat, 'f*' ).spec_match?(sp), true
|
160
|
+
test_eq? new_filter(nil, pat, '{foo,bar}').spec_match?(sp), true
|
161
|
+
test_eq? new_filter(nil, pat, 'fooooo' ).spec_match?(sp), false
|
160
162
|
end
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|
164
|
-
def prepare()
|
166
|
+
def self.prepare()
|
165
167
|
Oktest.scope do
|
166
168
|
topic 'Hello' do
|
167
169
|
spec "hello spec", tag: 'new' do ok {"hello"} == "hello" end
|
@@ -180,32 +182,32 @@ class Filter_TC < TC
|
|
180
182
|
end
|
181
183
|
end
|
182
184
|
|
183
|
-
def run_filter(topic_pattern, spec_pattern, tag_pattern, negative: false)
|
184
|
-
prepare()
|
185
|
+
def self.run_filter(topic_pattern, spec_pattern, tag_pattern, negative: false)
|
186
|
+
self.prepare()
|
185
187
|
filter = Oktest::Filter.new(topic_pattern, spec_pattern, tag_pattern, negative: negative)
|
186
188
|
Oktest.filter(filter)
|
187
189
|
reporter = Oktest::VerboseReporter.new()
|
188
|
-
sout, serr =
|
190
|
+
sout, serr = capture_output! '', tty: false do
|
189
191
|
Oktest::Runner.new(reporter).start()
|
190
192
|
end
|
191
|
-
|
192
|
-
return sout.sub(/^## total:.*\n/, '').sub(/^## test
|
193
|
+
test_eq? serr, ""
|
194
|
+
return sout.sub(/^## total:.*\n/, '').sub(/^## test\d?\/filter_test\.rb\n/, '')
|
193
195
|
end
|
194
196
|
|
195
|
-
def uncolor(s)
|
196
|
-
return s.gsub(/\
|
197
|
+
def self.uncolor(s)
|
198
|
+
return s.gsub(/\e\[.*?m/, '')
|
197
199
|
end
|
198
200
|
|
199
|
-
|
200
|
-
|
201
|
+
test_target 'Oktest::Filter#filter_children!()' do
|
202
|
+
test_subject "[!osoq2] can filter topics by full name." do
|
201
203
|
expected = <<END
|
202
204
|
* Hello
|
203
205
|
- [pass] hello spec
|
204
206
|
END
|
205
207
|
sout = run_filter('Hello', nil, nil)
|
206
|
-
|
208
|
+
test_eq? uncolor(sout), expected
|
207
209
|
end
|
208
|
-
|
210
|
+
test_subject "[!wzcco] can filter topics by pattern." do
|
209
211
|
expected = <<END
|
210
212
|
* Topic 832795
|
211
213
|
* Integer
|
@@ -217,9 +219,9 @@ END
|
|
217
219
|
- [pass] spec example #5
|
218
220
|
END
|
219
221
|
sout = run_filter('*832795*', nil, nil)
|
220
|
-
|
222
|
+
test_eq? uncolor(sout), expected
|
221
223
|
end
|
222
|
-
|
224
|
+
test_subject "[!mz6id] can filter nested topics." do
|
223
225
|
expected = <<END
|
224
226
|
* Topic 832795
|
225
227
|
* Float
|
@@ -227,23 +229,23 @@ END
|
|
227
229
|
- [pass] spec example #4
|
228
230
|
END
|
229
231
|
sout = run_filter('*loat*', nil, nil)
|
230
|
-
|
232
|
+
test_eq? uncolor(sout), expected
|
231
233
|
end
|
232
|
-
|
234
|
+
test_subject "[!0kw9c] can filter specs by full name." do
|
233
235
|
expected = <<END
|
234
236
|
* Hello
|
235
237
|
- [pass] hello spec
|
236
238
|
END
|
237
239
|
sout = run_filter(nil, 'hello spec', nil)
|
238
|
-
|
240
|
+
test_eq? uncolor(sout), expected
|
239
241
|
end
|
240
|
-
|
242
|
+
test_subject "[!fd8wt] can filter specs by pattern." do
|
241
243
|
expected = <<END
|
242
244
|
* Topic 832795
|
243
245
|
- [pass] spec example #5
|
244
246
|
END
|
245
247
|
sout = run_filter(nil, '*#5', nil)
|
246
|
-
|
248
|
+
test_eq? uncolor(sout), expected
|
247
249
|
#
|
248
250
|
expected = <<END
|
249
251
|
* Topic 832795
|
@@ -256,18 +258,18 @@ END
|
|
256
258
|
- [pass] spec example #5
|
257
259
|
END
|
258
260
|
sout = run_filter(nil, 'spec example*', nil)
|
259
|
-
|
261
|
+
test_eq? uncolor(sout), expected
|
260
262
|
end
|
261
|
-
|
263
|
+
test_subject "[!1jphf] can filter specs from nested topics." do
|
262
264
|
expected = <<END
|
263
265
|
* Topic 832795
|
264
266
|
* Float
|
265
267
|
- [pass] spec example #4
|
266
268
|
END
|
267
269
|
sout = run_filter(nil, '*#4', nil)
|
268
|
-
|
270
|
+
test_eq? uncolor(sout), expected
|
269
271
|
end
|
270
|
-
|
272
|
+
test_subject "[!eirmu] can filter topics by tag name." do
|
271
273
|
expected = <<END
|
272
274
|
* Topic 832795
|
273
275
|
* Float
|
@@ -276,9 +278,9 @@ END
|
|
276
278
|
- [pass] spec example #5
|
277
279
|
END
|
278
280
|
sout = run_filter(nil, nil, 'exp')
|
279
|
-
|
281
|
+
test_eq? uncolor(sout), expected
|
280
282
|
end
|
281
|
-
|
283
|
+
test_subject "[!6sq7g] can filter specs by tag name." do
|
282
284
|
expected = <<END
|
283
285
|
* Hello
|
284
286
|
- [pass] hello spec
|
@@ -288,9 +290,9 @@ END
|
|
288
290
|
- [pass] spec example #5
|
289
291
|
END
|
290
292
|
sout = run_filter(nil, nil, 'new')
|
291
|
-
|
293
|
+
test_eq? uncolor(sout), expected
|
292
294
|
end
|
293
|
-
|
295
|
+
test_subject "[!6to6n] can filter by multiple tag name." do
|
294
296
|
expected = <<END
|
295
297
|
* Hello
|
296
298
|
- [pass] hello spec
|
@@ -303,15 +305,15 @@ END
|
|
303
305
|
- [pass] spec example #5
|
304
306
|
END
|
305
307
|
sout = run_filter(nil, nil, '{new,exp}')
|
306
|
-
|
308
|
+
test_eq? uncolor(sout), expected
|
307
309
|
end
|
308
|
-
|
310
|
+
test_subject "[!r6g6a] supports negative filter by topic." do
|
309
311
|
expected = <<END
|
310
312
|
* Hello
|
311
313
|
- [pass] hello spec
|
312
314
|
END
|
313
315
|
sout = run_filter('Topic 832795', nil, nil, negative: true)
|
314
|
-
|
316
|
+
test_eq? uncolor(sout), expected
|
315
317
|
#
|
316
318
|
expected = <<END
|
317
319
|
* Hello
|
@@ -320,9 +322,9 @@ END
|
|
320
322
|
- [pass] spec example #5
|
321
323
|
END
|
322
324
|
sout = run_filter('{Integer,Float}', nil, nil, negative: true)
|
323
|
-
|
325
|
+
test_eq? uncolor(sout), expected
|
324
326
|
end
|
325
|
-
|
327
|
+
test_subject "[!doozg] supports negative filter by spec." do
|
326
328
|
expected = <<END
|
327
329
|
* Topic 832795
|
328
330
|
* Integer
|
@@ -334,16 +336,16 @@ END
|
|
334
336
|
- [pass] spec example #5
|
335
337
|
END
|
336
338
|
sout = run_filter(nil, '*hello*', nil, negative: true)
|
337
|
-
|
339
|
+
test_eq? uncolor(sout), expected
|
338
340
|
#
|
339
341
|
expected = <<END
|
340
342
|
* Hello
|
341
343
|
- [pass] hello spec
|
342
344
|
END
|
343
345
|
sout = run_filter(nil, 'spec example #[1-5]', nil, negative: true)
|
344
|
-
|
346
|
+
test_eq? uncolor(sout), expected
|
345
347
|
end
|
346
|
-
|
348
|
+
test_subject "[!ntv44] supports negative filter by tag name." do
|
347
349
|
expected = <<END
|
348
350
|
* Topic 832795
|
349
351
|
* Integer
|
@@ -353,7 +355,7 @@ END
|
|
353
355
|
- [pass] spec example #4
|
354
356
|
END
|
355
357
|
sout = run_filter(nil, nil, 'new', negative: true)
|
356
|
-
|
358
|
+
test_eq? uncolor(sout), expected
|
357
359
|
#
|
358
360
|
expected = <<END
|
359
361
|
* Hello
|
@@ -364,7 +366,7 @@ END
|
|
364
366
|
- [pass] spec example #2
|
365
367
|
END
|
366
368
|
sout = run_filter(nil, nil, 'exp', negative: true)
|
367
|
-
|
369
|
+
test_eq? uncolor(sout), expected
|
368
370
|
#
|
369
371
|
expected = <<END
|
370
372
|
* Topic 832795
|
@@ -372,7 +374,7 @@ END
|
|
372
374
|
- [pass] spec example #1
|
373
375
|
END
|
374
376
|
sout = run_filter(nil, nil, '{exp,new}', negative: true)
|
375
|
-
|
377
|
+
test_eq? uncolor(sout), expected
|
376
378
|
end
|
377
379
|
|
378
380
|
end
|
data/test/fixture_test.rb
CHANGED
@@ -2,34 +2,35 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
###
|
5
|
-
### $Release: 1.
|
5
|
+
### $Release: 1.5.0 $
|
6
6
|
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
7
7
|
### $License: MIT License $
|
8
8
|
###
|
9
9
|
|
10
|
-
require_relative './
|
10
|
+
require_relative './init'
|
11
11
|
|
12
12
|
|
13
|
-
class
|
13
|
+
class FixtureManager__Test
|
14
|
+
extend NanoTest
|
14
15
|
|
15
|
-
class
|
16
|
+
class DummyReporter5 < Oktest::Reporter
|
16
17
|
def exit_spec(spec, depth, status, error, parent)
|
17
18
|
puts error.inspect if error
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
21
|
-
def run_all(dummy: false)
|
22
|
-
reporter = dummy ?
|
23
|
-
sout, serr =
|
22
|
+
def self.run_all(dummy: false)
|
23
|
+
reporter = dummy ? DummyReporter5.new : Oktest::Reporter.new
|
24
|
+
sout, serr = capture_output! do
|
24
25
|
Oktest::Runner.new(reporter).start()
|
25
26
|
end
|
26
|
-
|
27
|
+
test_eq? serr, ""
|
27
28
|
return sout
|
28
29
|
end
|
29
30
|
|
30
|
-
|
31
|
+
test_target 'Oktest::FixtureManager#get_fixture_values()' do
|
31
32
|
|
32
|
-
|
33
|
+
test_subject "[!v587k] resolves fixtures." do
|
33
34
|
Oktest.scope do
|
34
35
|
fixture(:x) { 10 }
|
35
36
|
topic "Parent" do
|
@@ -44,10 +45,10 @@ class FixtureManager_TC < TC
|
|
44
45
|
end
|
45
46
|
expected = "[10, 20, 30]\n"
|
46
47
|
sout = run_all()
|
47
|
-
|
48
|
+
test_eq? sout, expected
|
48
49
|
end
|
49
50
|
|
50
|
-
|
51
|
+
test_subject "[!ja2ew] resolves 'this_spec' fixture name as description of current spec." do
|
51
52
|
Oktest.scope do
|
52
53
|
topic Integer do
|
53
54
|
spec "1+1 should be 2." do |this_spec|
|
@@ -56,10 +57,10 @@ class FixtureManager_TC < TC
|
|
56
57
|
end
|
57
58
|
end
|
58
59
|
sout = run_all()
|
59
|
-
|
60
|
+
test_eq? sout, "this_spec=\"1+1 should be 2.\"\n"
|
60
61
|
end
|
61
62
|
|
62
|
-
|
63
|
+
test_subject "[!w6ffs] resolves 'this_topic' fixture name as target objec of current topic." do
|
63
64
|
Oktest.scope do
|
64
65
|
topic Integer do
|
65
66
|
spec "1+1 should be 2." do |this_topic|
|
@@ -68,10 +69,10 @@ class FixtureManager_TC < TC
|
|
68
69
|
end
|
69
70
|
end
|
70
71
|
sout = run_all()
|
71
|
-
|
72
|
+
test_eq? sout, "this_topic=Integer\n"
|
72
73
|
end
|
73
74
|
|
74
|
-
|
75
|
+
test_subject "[!np4p9] raises error when loop exists in dependency." do
|
75
76
|
Oktest.scope do
|
76
77
|
topic "Parent" do
|
77
78
|
fixture(:a) {|b| nil }
|
@@ -85,14 +86,14 @@ class FixtureManager_TC < TC
|
|
85
86
|
end
|
86
87
|
expected = "\#<Oktest::LoopedDependencyError: fixture dependency is looped: a->b=>c=>d=>b>\n"
|
87
88
|
sout = run_all(dummy: true)
|
88
|
-
|
89
|
+
test_eq? sout, expected
|
89
90
|
end
|
90
91
|
|
91
92
|
end
|
92
93
|
|
93
|
-
|
94
|
+
test_target 'Oktest::FixtureManager#get_fixture_value()' do
|
94
95
|
|
95
|
-
|
96
|
+
test_subject "[!2esaf] resolves fixture dependencies." do
|
96
97
|
Oktest.scope do
|
97
98
|
topic "Parent" do
|
98
99
|
fixture(:a) {|b, c| ["A"] + b + c }
|
@@ -114,10 +115,10 @@ class FixtureManager_TC < TC
|
|
114
115
|
["A", "B", "C", "D"]
|
115
116
|
END
|
116
117
|
sout = run_all()
|
117
|
-
|
118
|
+
test_eq? sout, expected
|
118
119
|
end
|
119
120
|
|
120
|
-
|
121
|
+
test_subject "[!gyyst] overwrites keyword params by fixture values." do
|
121
122
|
Oktest.scope do
|
122
123
|
topic "topic#1" do
|
123
124
|
fixture(:x) {|y, z: 3| {y: y, z: z} }
|
@@ -127,10 +128,10 @@ END
|
|
127
128
|
end
|
128
129
|
end
|
129
130
|
sout = run_all()
|
130
|
-
|
131
|
+
test_eq? sout, "{:y=>2, :z=>3}\n{:y=>4, :z=>5}\n"
|
131
132
|
end
|
132
133
|
|
133
|
-
|
134
|
+
test_subject "[!4xghy] calls fixture block with context object as self." do
|
134
135
|
Oktest.scope do
|
135
136
|
topic "Parent" do
|
136
137
|
fixture(:x) { @x = 10; 20 }
|
@@ -141,10 +142,10 @@ END
|
|
141
142
|
10
|
142
143
|
END
|
143
144
|
sout = run_all()
|
144
|
-
|
145
|
+
test_eq? sout, expected
|
145
146
|
end
|
146
147
|
|
147
|
-
|
148
|
+
test_subject "[!8t3ul] caches fixture value to call fixture block only once per spec." do
|
148
149
|
Oktest.scope do
|
149
150
|
topic "Parent" do
|
150
151
|
fixture(:x) { puts "** x called."; 10 }
|
@@ -162,10 +163,10 @@ END
|
|
162
163
|
12
|
163
164
|
END
|
164
165
|
sout = run_all()
|
165
|
-
|
166
|
+
test_eq? sout, expected
|
166
167
|
end
|
167
168
|
|
168
|
-
|
169
|
+
test_subject "[!4chb9] traverses parent topics if fixture not found in current topic." do
|
169
170
|
Oktest.scope do
|
170
171
|
topic 'Parent' do
|
171
172
|
fixture(:x) { 10 }
|
@@ -179,10 +180,10 @@ END
|
|
179
180
|
end
|
180
181
|
end
|
181
182
|
sout = run_all()
|
182
|
-
|
183
|
+
test_eq? sout, "\"x=10, y=11, z=12\"\n"
|
183
184
|
end
|
184
185
|
|
185
|
-
|
186
|
+
test_subject "[!wt3qk] suports global scope." do
|
186
187
|
Oktest.global_scope do
|
187
188
|
fixture :gf1592 do {id: "gf1592"} end
|
188
189
|
fixture :gf6535 do |gf1592| {id: "gf6535", parent: gf1592} end
|
@@ -197,10 +198,10 @@ END
|
|
197
198
|
end
|
198
199
|
end
|
199
200
|
_ = run_all()
|
200
|
-
|
201
|
+
test_eq? data, {:id=>"gf8979", :parent=>{:id=>"gf6535", :parent=>{:id=>"gf1592"}}}
|
201
202
|
end
|
202
203
|
|
203
|
-
|
204
|
+
test_subject "[!nr79z] raises error when fixture not found." do
|
204
205
|
Oktest.scope do
|
205
206
|
topic "Parent" do
|
206
207
|
fixture(:x) { 10 }
|
@@ -211,7 +212,7 @@ END
|
|
211
212
|
end
|
212
213
|
expected = "#<Oktest::FixtureNotFoundError: y: fixture not found. (spec: spec#1)>\n"
|
213
214
|
sout = run_all(dummy: true)
|
214
|
-
|
215
|
+
test_eq? sout, expected
|
215
216
|
end
|
216
217
|
|
217
218
|
end
|