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.
@@ -1,16 +1,91 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
 
3
4
  ###
4
- ### $Release: 1.3.1 $
5
+ ### $Release: 1.5.0 $
5
6
  ### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
6
7
  ### $License: MIT License $
7
8
  ###
8
9
 
9
- require_relative './initialize'
10
+ require_relative './init'
10
11
 
11
12
 
12
13
  module ReporterTestHelper
13
14
 
15
+ INPUT_7 = <<'END'
16
+ require 'oktest'
17
+
18
+ Oktest.scope do
19
+
20
+ topic "Parent" do
21
+
22
+ topic "Child1" do
23
+ spec "1+1 should be 2" do
24
+ ok {1+1} == 2
25
+ end
26
+ spec "1-1 should be 0" do
27
+ ok {1-1} == 0
28
+ end
29
+ end
30
+
31
+ topic "Child2" do
32
+ spec "1*1 should be 1" do
33
+ ok {1*1} == 2
34
+ end
35
+ spec "1/1 should be 1" do
36
+ ok {1/0} == 1
37
+ end
38
+ end
39
+
40
+ topic "Child3" do
41
+ spec "skip example" do
42
+ skip_when true, "a certain condition"
43
+ end
44
+ spec "todo example"
45
+ end
46
+
47
+ case_when "x is negative" do
48
+ spec "x*x is positive." do
49
+ x = -2
50
+ ok {x*x} > 0
51
+ end
52
+ end
53
+
54
+ case_else do
55
+ spec "x*x is also positive." do
56
+ x = 2
57
+ ok {x*x} > 0
58
+ end
59
+ end
60
+
61
+ spec "last spec" do
62
+ ok {1+1} == 2
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
69
+ END
70
+
71
+ def default_test
72
+ end
73
+
74
+ def test_subject(desc, &b)
75
+ @filename = "_test.tmp"
76
+ File.write(@filename, INPUT_7)
77
+ color_enabled = Oktest::Config.color_enabled
78
+ Oktest::Config.color_enabled = true
79
+ super
80
+ ensure
81
+ Oktest::Config.color_enabled = color_enabled
82
+ File.unlink(@filename) if @filename && File.exist?(@filename)
83
+ end
84
+
85
+ def run(*opts)
86
+ return capture_output! { Oktest::MainApp.main(opts) }
87
+ end
88
+
14
89
  def edit_actual(output)
15
90
  bkup = output.dup
16
91
  output = output.gsub(/^.*\r/, '')
@@ -29,10 +104,11 @@ module ReporterTestHelper
29
104
  end
30
105
 
31
106
 
32
- class BaseReporter_TC < TC
33
- include ReporterTestHelper
107
+ class BaseReporter__Test
108
+ extend NanoTest
109
+ extend ReporterTestHelper
34
110
 
35
- def new_topic_and_spec()
111
+ def self.new_topic_and_spec()
36
112
  sc = Oktest::ScopeNode.new(nil, "foo.rb")
37
113
  t1 = Oktest::TopicNode.new(sc, 'Example')
38
114
  t2 = Oktest::TopicNode.new(t1, Array)
@@ -41,33 +117,33 @@ class BaseReporter_TC < TC
41
117
  return t3, spec
42
118
  end
43
119
 
44
- describe '#enter_all()' do
45
- it "[!pq3ia] initalizes counter by zero." do
120
+ test_target 'Oktest::BaseReporter#enter_all()' do
121
+ test_subject "[!pq3ia] initalizes counter by zero." do
46
122
  r = Oktest::BaseReporter.new
47
123
  c = r.instance_eval { @counts }
48
- assert_eq c, {}
124
+ test_eq? c, {}
49
125
  #
50
126
  r.enter_all(nil)
51
127
  c = r.instance_eval { @counts }
52
- assert_eq c, {:PASS=>0, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
128
+ test_eq? c, {:PASS=>0, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
53
129
  end
54
130
  end
55
131
 
56
- describe '#exit_all()' do
57
- it "[!wjp7u] prints footer with elapsed time." do
132
+ test_target 'Oktest::BaseReporter#exit_all()' do
133
+ test_subject "[!wjp7u] prints footer with elapsed time." do
58
134
  r = Oktest::BaseReporter.new
59
135
  r.enter_all(nil)
60
136
  r.instance_eval { @start_at = Time.now - 7.0 }
61
- sout, serr = capture do
137
+ sout, serr = capture_output! do
62
138
  r.exit_all(nil)
63
139
  end
64
- assert_eq sout, "## total:0 (pass:0, fail:0, error:0, skip:0, todo:0) in 7.00s\n"
65
- assert_eq serr, ""
140
+ test_eq? sout, "## total:0 (pass:0, fail:0, error:0, skip:0, todo:0) in 7.00s\n"
141
+ test_eq? serr, ""
66
142
  end
67
143
  end
68
144
 
69
- describe '#exit_spec()' do
70
- it "[!r6yge] increments counter according to status." do
145
+ test_target 'Oktest::BaseReporter#exit_spec()' do
146
+ test_subject "[!r6yge] increments counter according to status." do
71
147
  begin; 1/0
72
148
  rescue => exc
73
149
  end
@@ -76,21 +152,21 @@ class BaseReporter_TC < TC
76
152
  topic1, spec1 = new_topic_and_spec()
77
153
  #
78
154
  r.exit_spec(spec1, 1, :PASS, nil, topic1)
79
- assert_eq r.counts, {:PASS=>1, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
155
+ test_eq? r.counts, {:PASS=>1, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
80
156
  #
81
157
  r.exit_spec(spec1, 1, :FAIL, exc, topic1)
82
- assert_eq r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>0, :SKIP=>0, :TODO=>0}
158
+ test_eq? r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>0, :SKIP=>0, :TODO=>0}
83
159
  #
84
160
  r.exit_spec(spec1, 1, :ERROR, exc, topic1)
85
- assert_eq r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>0, :TODO=>0}
161
+ test_eq? r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>0, :TODO=>0}
86
162
  #
87
163
  r.exit_spec(spec1, 1, :SKIP, nil, topic1)
88
- assert_eq r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>1, :TODO=>0}
164
+ test_eq? r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>1, :TODO=>0}
89
165
  #
90
166
  r.exit_spec(spec1, 1, :TODO, nil, topic1)
91
- assert_eq r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>1, :TODO=>1}
167
+ test_eq? r.counts, {:PASS=>1, :FAIL=>1, :ERROR=>1, :SKIP=>1, :TODO=>1}
92
168
  end
93
- it "[!nupb4] keeps exception info when status is FAIL or ERROR." do
169
+ test_subject "[!nupb4] keeps exception info when status is FAIL or ERROR." do
94
170
  begin; 1/0
95
171
  rescue => exc
96
172
  end
@@ -106,61 +182,61 @@ class BaseReporter_TC < TC
106
182
  r.exit_spec(spec1, 1, :TODO, nil, topic1)
107
183
  #
108
184
  exceptions = r.instance_variable_get('@exceptions')
109
- assert_eq exceptions.length, 2
110
- assert_eq exceptions[0][1], :FAIL
111
- assert_eq exceptions[1][1], :ERROR
185
+ test_eq? exceptions.length, 2
186
+ test_eq? exceptions[0][1], :FAIL
187
+ test_eq? exceptions[1][1], :ERROR
112
188
  end
113
189
  end
114
190
 
115
- describe '#reset_counts()' do
116
- it "[!oc29s] clears counters to zero." do
191
+ test_target 'Oktest::BaseReporter#reset_counts()' do
192
+ test_subject "[!oc29s] clears counters to zero." do
117
193
  r = Oktest::BaseReporter.new
118
194
  r.instance_eval do
119
195
  @counts = {:PASS=>5, :FAIL=>4, :ERROR=>3, :SKIP=>2, :TODO=>1}
120
196
  end
121
197
  r.__send__(:reset_counts)
122
- assert_eq r.instance_variable_get('@counts'), {:PASS=>0, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
198
+ test_eq? r.instance_variable_get('@counts'), {:PASS=>0, :FAIL=>0, :ERROR=>0, :SKIP=>0, :TODO=>0}
123
199
  end
124
200
  end
125
201
 
126
- describe '#print_exc_message()' do
127
- def error_msg()
202
+ test_target 'Oktest::BaseReporter#print_exc_message()' do
203
+ def self.error_msg()
128
204
  return ("something failed\n"\
129
205
  " expect: foo\n"\
130
206
  " actual: bar\n")
131
207
  end
132
- it "[!hr7jn] prints detail of assertion failed." do
208
+ test_subject "[!hr7jn] prints detail of assertion failed." do
133
209
  errmsg = error_msg()
134
210
  exc = Oktest::AssertionFailed.new(errmsg)
135
211
  r = Oktest::BaseReporter.new
136
- sout, serr = capture do
212
+ sout, serr = capture_output! do
137
213
  r.__send__(:print_exc_message, exc, :FAIL)
138
214
  end
139
- assert_eq sout, plain2colored(<<END)
215
+ test_eq? sout, plain2colored(<<END)
140
216
  <R>something failed</R>
141
217
  expect: foo
142
218
  actual: bar
143
219
  END
144
- assert_eq serr, ""
220
+ test_eq? serr, ""
145
221
  end
146
- it "[!pd41p] prints detail of exception." do
222
+ test_subject "[!pd41p] prints detail of exception." do
147
223
  errmsg = error_msg()
148
224
  exc = Oktest::AssertionFailed.new(errmsg)
149
225
  r = Oktest::BaseReporter.new
150
- sout, serr = capture do
226
+ sout, serr = capture_output! do
151
227
  r.__send__(:print_exc_message, exc, :ERROR)
152
228
  end
153
- assert_eq sout, plain2colored(<<END)
229
+ test_eq? sout, plain2colored(<<END)
154
230
  <R>Oktest::AssertionFailed: something failed</R>
155
231
  expect: foo
156
232
  actual: bar
157
233
  END
158
- assert_eq serr, ""
234
+ test_eq? serr, ""
159
235
  end
160
236
  end
161
237
 
162
- describe '#print_exc_backtrace()' do
163
- it "[!ocxy6] prints backtrace info and lines in file." do
238
+ test_target 'Oktest::BaseReporter#print_exc_backtrace()' do
239
+ test_subject "[!ocxy6] prints backtrace info and lines in file." do
164
240
  begin
165
241
  if true
166
242
  if true
@@ -172,47 +248,46 @@ END
172
248
  end
173
249
  #
174
250
  expected = <<END
175
- test/reporter_test.rb:#{lineno}:in `block (2 levels) in <class:BaseReporter_TC>'
251
+ test/reporter_test.rb:#{lineno}:in `block (2 levels) in <main>'
176
252
  raise Oktest::AssertionFailed, "something failed."
177
253
  END
178
254
  #
179
255
  r = Oktest::BaseReporter.new
180
- sout, serr = capture do
256
+ sout, serr = capture_output! do
181
257
  r.__send__(:print_exc_backtrace, exc, :FAIL)
182
258
  end
183
- assert sout.start_with?(expected), "traceback not matched"
184
- assert_eq serr, ""
259
+ sout = sout.sub(/ in <.*?>/, " in <main>")
260
+ test_ok? sout.start_with?(expected), msg: "traceback not matched"
261
+ test_eq? serr, ""
185
262
  end
186
- it "[!jbped] skips backtrace of oktest.rb when assertion failure." do
187
- begin
263
+ test_subject "[!jbped] skips backtrace of oktest.rb when assertion failure." do
264
+ exc = test_exception? Oktest::AssertionFailed do
188
265
  eval "raise Oktest::AssertionFailed, 'dummie'", binding(), "lib/oktest.rb", 100
189
- rescue Oktest::AssertionFailed => exc
190
266
  end
191
267
  #
192
268
  status = :FAIL
193
- sout, serr = capture do
269
+ sout, serr = capture_output! do
194
270
  Oktest::BaseReporter.new.__send__(:print_exc_backtrace, exc, status)
195
271
  end
196
- assert sout !~ /lib\/oktest\.rb:/, "should skip but not"
197
- assert_eq serr, ""
272
+ test_ok? sout !~ /lib\/oktest\.rb:/, msg: "should skip but not"
273
+ test_eq? serr, ""
198
274
  end
199
- it "[!cfkzg] don't skip first backtrace entry when error." do
200
- begin
275
+ test_subject "[!cfkzg] don't skip first backtrace entry when error." do
276
+ exc = test_exception? Oktest::AssertionFailed do
201
277
  eval "raise Oktest::AssertionFailed, 'dummie'", binding(), "lib/oktest.rb", 100
202
- rescue Oktest::AssertionFailed => exc
203
278
  end
204
279
  #
205
280
  status = :ERROR
206
- sout, serr = capture do
281
+ sout, serr = capture_output! do
207
282
  Oktest::BaseReporter.new.__send__(:print_exc_backtrace, exc, status)
208
283
  end
209
- assert sout =~ /lib\/oktest\.rb:100/, "should not skip but does"
210
- assert_eq serr, ""
284
+ test_match? sout, /lib\/oktest\.rb:100/, msg: "should not skip but does"
285
+ test_eq? serr, ""
211
286
  end
212
287
  end
213
288
 
214
- describe '#print_exc()' do
215
- it "[!5ara3] prints exception info of assertion failure." do
289
+ test_target 'Oktest::BaseReporter#print_exc()' do
290
+ test_subject "[!5ara3] prints exception info of assertion failure." do
216
291
  begin
217
292
  if true
218
293
  lineno = __LINE__ + 1
@@ -223,19 +298,20 @@ END
223
298
  #
224
299
  expected = <<END
225
300
  [<R>Fail</R>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>
226
- #{__FILE__}:#{lineno}:in `block (2 levels) in <class:BaseReporter_TC>'
301
+ #{__FILE__}:#{lineno}:in `block (2 levels) in <main>'
227
302
  raise Oktest::AssertionFailed, 'dummie:43201'
228
303
  END
229
304
  #
230
305
  topic1, spec1 = new_topic_and_spec()
231
306
  status = :FAIL
232
- sout, serr = capture do
307
+ sout, serr = capture_output! do
233
308
  Oktest::BaseReporter.new.__send__(:print_exc, spec1, status, exc, topic1)
234
309
  end
235
- assert sout.start_with?(plain2colored(expected)), "not matched"
236
- assert_eq serr, ""
310
+ sout = sout.gsub(/ in <.*?>/, " in <main>")
311
+ test_ok? sout.start_with?(plain2colored(expected)), msg: "not matched"
312
+ test_eq? serr, ""
237
313
  end
238
- it "[!pcpy4] prints exception info of error." do
314
+ test_subject "[!pcpy4] prints exception info of error." do
239
315
  begin
240
316
  if true
241
317
  lineno = __LINE__ + 1
@@ -252,16 +328,16 @@ END
252
328
  #
253
329
  topic1, spec1 = new_topic_and_spec()
254
330
  status = :ERROR
255
- sout, serr = capture do
331
+ sout, serr = capture_output! do
256
332
  Oktest::BaseReporter.new.__send__(:print_exc, spec1, status, exc, topic1)
257
333
  end
258
- assert sout.start_with?(plain2colored(expected)), "not matched"
259
- assert_eq serr, ""
334
+ test_ok? sout.start_with?(plain2colored(expected)), msg: "not matched"
335
+ test_eq? serr, ""
260
336
  end
261
337
  end
262
338
 
263
- describe '#print_exception()' do
264
- def new_reporter_with_exceptions(exc)
339
+ test_target 'Oktest::BaseReporter#print_exception()' do
340
+ def self.new_reporter_with_exceptions(exc)
265
341
  topic1, spec1 = new_topic_and_spec()
266
342
  r = Oktest::BaseReporter.new
267
343
  r.instance_eval do
@@ -274,7 +350,7 @@ END
274
350
  end
275
351
  return r
276
352
  end
277
- it "[!fbr16] prints assertion failures and excerptions with separator." do
353
+ test_subject "[!fbr16] prints assertion failures and excerptions with separator." do
278
354
  begin
279
355
  raise Oktest::AssertionFailed, 'dummie'
280
356
  rescue Oktest::AssertionFailed => exc
@@ -284,31 +360,31 @@ END
284
360
  expected1 = "[<R>Fail</R>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>\n"
285
361
  expected2 = "[<E>ERROR</E>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>\n"
286
362
  #
287
- sout, serr = capture { r.__send__(:print_exceptions) }
288
- assert sout.start_with?(sep + plain2colored(expected1)), "not matched"
289
- assert sout.include?(sep + plain2colored(expected2)), "not matched"
290
- assert sout.end_with?(sep), "not matched"
291
- assert_eq serr, ""
363
+ sout, serr = capture_output! { r.__send__(:print_exceptions) }
364
+ test_ok? sout.start_with?(sep + plain2colored(expected1)), msg: "not matched"
365
+ test_ok? sout.include?(sep + plain2colored(expected2)), msg: "not matched"
366
+ test_ok? sout.end_with?(sep), msg: "not matched"
367
+ test_eq? serr, ""
292
368
  end
293
- it "[!2s9r2] prints nothing when no fails nor errors." do
369
+ test_subject "[!2s9r2] prints nothing when no fails nor errors." do
294
370
  r = new_reporter_with_exceptions(nil)
295
- sout, serr = capture { r.__send__(:print_exceptions) }
296
- assert_eq sout, ""
297
- assert_eq serr, ""
371
+ sout, serr = capture_output! { r.__send__(:print_exceptions) }
372
+ test_eq? sout, ""
373
+ test_eq? serr, ""
298
374
  end
299
- it "[!ueeih] clears exceptions." do
375
+ test_subject "[!ueeih] clears exceptions." do
300
376
  begin 1/0
301
377
  rescue => exc
302
378
  end
303
379
  r = new_reporter_with_exceptions(exc)
304
- assert ! r.instance_variable_get('@exceptions').empty?
305
- sout, serr = capture { r.__send__(:print_exceptions) }
306
- assert r.instance_variable_get('@exceptions').empty?
380
+ test_ok? ! r.instance_variable_get('@exceptions').empty?
381
+ sout, serr = capture_output! { r.__send__(:print_exceptions) }
382
+ test_ok? r.instance_variable_get('@exceptions').empty?
307
383
  end
308
384
  end
309
385
 
310
- describe '#footer()' do
311
- def new_footer(elapsed=0.5)
386
+ test_target 'Oktest::BaseReporter#footer()' do
387
+ def self.new_footer(elapsed=0.5)
312
388
  r = Oktest::BaseReporter.new
313
389
  r.enter_all(nil)
314
390
  r.instance_eval do
@@ -317,115 +393,58 @@ END
317
393
  return r.__send__(:footer, elapsed)
318
394
  end
319
395
 
320
- it "[!iy4uo] calculates total count of specs." do
396
+ test_subject "[!iy4uo] calculates total count of specs." do
321
397
  ft = new_footer()
322
- assert ft =~ /total:15 /, "failed to calculate total counts."
398
+ test_match? ft, /total:15 /, msg: "failed to calculate total counts."
323
399
  end
324
400
 
325
- it "[!2nnma] includes count of each status." do
401
+ test_subject "[!2nnma] includes count of each status." do
326
402
  ft = new_footer()
327
- assert ft =~ /pass:5\b/ , "failed to count passed status."
328
- assert ft =~ /fail:4\b/ , "failed to count failed status."
329
- assert ft =~ /error:3\b/ , "failed to count error status."
330
- assert ft =~ /skip:2\b/ , "failed to count skipped status."
331
- assert ft =~ /todo:1\b/ , "failed to count todo status."
403
+ test_match? ft, /pass:5\b/ , msg: "failed to count passed status."
404
+ test_match? ft, /fail:4\b/ , msg: "failed to count failed status."
405
+ test_match? ft, /error:3\b/ , msg: "failed to count error status."
406
+ test_match? ft, /skip:2\b/ , msg: "failed to count skipped status."
407
+ test_match? ft, /todo:1\b/ , msg: "failed to count todo status."
332
408
  end
333
409
 
334
- it "[!fp57l] includes elapsed time." do
410
+ test_subject "[!fp57l] includes elapsed time." do
335
411
  ft = new_footer()
336
- assert ft =~ / in 0.500s$/, "failed to embed elapsed time."
412
+ test_match? ft, / in 0.500s$/, msg: "failed to embed elapsed time."
337
413
  end
338
414
 
339
- it "[!r5y02] elapsed time format is adjusted along to time length." do
340
- assert new_footer( 0.5) =~ / in 0.500s$/ , "failed to embed elapsed time."
341
- assert new_footer( 6.5) =~ / in 6.50s$/ , "failed to embed elapsed time."
342
- assert new_footer( 17.5) =~ / in 17.5s$/ , "failed to embed elapsed time."
343
- assert new_footer( 61.5) =~ / in 1:01.5s$/ , "failed to embed elapsed time."
344
- assert new_footer( 610.5) =~ / in 10:10.5s$/ , "failed to embed elapsed time."
345
- assert new_footer( 3600.5) =~ / in 1:00:00.5s$/ , "failed to embed elapsed time."
346
- assert new_footer( 36000.5) =~ / in 10:00:00.5s$/ , "failed to embed elapsed time."
347
- assert new_footer(360000.5) =~ / in 100:00:00.5s$/ , "failed to embed elapsed time."
415
+ test_subject "[!r5y02] elapsed time format is adjusted along to time length." do
416
+ test_match? new_footer( 0.5), / in 0.500s$/ , msg: "failed to embed elapsed time."
417
+ test_match? new_footer( 6.5), / in 6.50s$/ , msg: "failed to embed elapsed time."
418
+ test_match? new_footer( 17.5), / in 17.5s$/ , msg: "failed to embed elapsed time."
419
+ test_match? new_footer( 61.5), / in 1:01.5s$/ , msg: "failed to embed elapsed time."
420
+ test_match? new_footer( 610.5), / in 10:10.5s$/ , msg: "failed to embed elapsed time."
421
+ test_match? new_footer( 3600.5), / in 1:00:00.5s$/ , msg: "failed to embed elapsed time."
422
+ test_match? new_footer( 36000.5), / in 10:00:00.5s$/ , msg: "failed to embed elapsed time."
423
+ test_match? new_footer(360000.5), / in 100:00:00.5s$/ , msg: "failed to embed elapsed time."
348
424
  end
349
425
 
350
- it "[!gx0n2] builds footer line." do
426
+ test_subject "[!gx0n2] builds footer line." do
351
427
  expected = "## total:15 (<C>pass:5</C>, <R>fail:4</R>, <E>error:3</E>, <Y>skip:2</Y>, <Y>todo:1</Y>) in 0.500s"
352
- assert new_footer(), plain2colored(expected)
428
+ test_eq? new_footer(), plain2colored(expected)
353
429
  end
354
430
  end
355
431
 
356
- describe '#spec_path()' do
357
- it "[!dv6fu] returns path string from top topic to current spec." do
432
+ test_target 'Oktest::BaseReporter#spec_path()' do
433
+ test_subject "[!dv6fu] returns path string from top topic to current spec." do
358
434
  sc = Oktest::ScopeNode.new(nil, "foo.rb")
359
435
  t1 = Oktest::TopicNode.new(sc, 'Example')
360
436
  t2 = Oktest::TopicNode.new(t1, Array)
361
437
  t3 = Oktest::TopicNode.new(t2, 'When some condition')
362
438
  s1 = Oktest::SpecLeaf.new(t3, "1+1 shoould be 2.") { nil }
363
439
  path = Oktest::BaseReporter.new.__send__(:spec_path, s1, t3)
364
- assert_eq path, "Example > Array > When some condition > 1+1 shoould be 2."
440
+ test_eq? path, "Example > Array > When some condition > 1+1 shoould be 2."
365
441
  end
366
442
  end
367
443
 
368
444
  end
369
445
 
370
446
 
371
- class Reporter_TC < TC
372
- include ReporterTestHelper
373
-
374
- INPUT = <<'END'
375
- require 'oktest'
376
-
377
- Oktest.scope do
378
-
379
- topic "Parent" do
380
-
381
- topic "Child1" do
382
- spec "1+1 should be 2" do
383
- ok {1+1} == 2
384
- end
385
- spec "1-1 should be 0" do
386
- ok {1-1} == 0
387
- end
388
- end
389
-
390
- topic "Child2" do
391
- spec "1*1 should be 1" do
392
- ok {1*1} == 2
393
- end
394
- spec "1/1 should be 1" do
395
- ok {1/0} == 1
396
- end
397
- end
398
-
399
- topic "Child3" do
400
- spec "skip example" do
401
- skip_when true, "a certain condition"
402
- end
403
- spec "todo example"
404
- end
405
-
406
- case_when "x is negative" do
407
- spec "x*x is positive." do
408
- x = -2
409
- ok {x*x} > 0
410
- end
411
- end
412
-
413
- case_else do
414
- spec "x*x is also positive." do
415
- x = 2
416
- ok {x*x} > 0
417
- end
418
- end
419
-
420
- spec "last spec" do
421
- ok {1+1} == 2
422
- end
423
-
424
- end
425
-
426
- end
427
-
428
- END
447
+ module ReporterOutput
429
448
 
430
449
  ERROR_PART = <<'END'
431
450
  ----------------------------------------------------------------------
@@ -497,37 +516,22 @@ END
497
516
  END
498
517
  QUIET_OUTPUT = QUIET_PART + ERROR_PART + FOOTER
499
518
 
500
- def default_test
501
- end
502
-
503
- def setup
504
- @filename = "_test.tmp"
505
- File.write(@filename, INPUT)
506
- @_color_enabled = Oktest::Config.color_enabled
507
- Oktest::Config.color_enabled = true
508
- end
509
-
510
- def teardown
511
- Oktest::Config.color_enabled = @_color_enabled
512
- File.unlink(@filename) if @filename && File.exist?(@filename)
513
- end
514
-
515
- def run(*opts)
516
- return capture { Oktest::MainApp.main(opts) }
517
- end
518
-
519
519
  end
520
520
 
521
+ include ReporterOutput
522
+
521
523
 
522
- class VerboseReporter_TC < Reporter_TC
524
+ class VerboseReporter__Test
525
+ extend NanoTest
526
+ extend ReporterTestHelper
523
527
 
524
- it "[!6o9nw] reports topic name and spec desc." do
528
+ test_subject "[!6o9nw] reports topic name and spec desc." do
525
529
  sout, serr = run("-sv", @filename)
526
- assert_eq edit_actual(sout), edit_expected(VERBOSE_OUTPUT)
527
- assert_eq serr, ""
530
+ test_eq? edit_actual(sout), edit_expected(VERBOSE_OUTPUT)
531
+ test_eq? serr, ""
528
532
  end
529
533
 
530
- it "[!ibdu7] reports errors even when no topics." do
534
+ test_subject "[!ibdu7] reports errors even when no topics." do
531
535
  input = <<'END'
532
536
  require 'oktest'
533
537
  Oktest.scope do
@@ -554,52 +558,90 @@ END
554
558
  END
555
559
  #
556
560
  sout, serr = run("-sv", @filename)
557
- assert_eq edit_actual(sout), edit_expected(expected)
558
- assert_eq serr, ""
561
+ test_eq? edit_actual(sout), edit_expected(expected)
562
+ test_eq? serr, ""
559
563
  end
560
564
 
561
565
  end
562
566
 
563
567
 
564
- class SimpleReporter_TC < Reporter_TC
568
+ class SimpleReporter__Test
569
+ extend NanoTest
570
+ extend ReporterTestHelper
571
+ extend ReporterOutput
565
572
 
566
- it "[!jxa1b] reports topics and progress." do
573
+ test_subject "[!jxa1b] reports topics and progress." do
567
574
  sout, serr = run("-ss", @filename)
568
- assert_eq edit_actual(sout), edit_expected(SIMPLE_OUTPUT)
569
- assert_eq serr, ""
575
+ test_eq? edit_actual(sout), edit_expected(SIMPLE_OUTPUT)
576
+ test_eq? serr, ""
570
577
  end
571
578
 
572
579
  end
573
580
 
574
581
 
575
- class CompactReporter_TC < Reporter_TC
582
+ class CompactReporter__Test
583
+ extend NanoTest
584
+ extend ReporterTestHelper
585
+ extend ReporterOutput
576
586
 
577
- it "[!xfd5o] reports filename." do
587
+ test_subject "[!xfd5o] reports filename." do
578
588
  sout, serr = run("-sc", @filename)
579
- assert_eq edit_actual(sout), edit_expected(COMPACT_OUTPUT)
580
- assert_eq serr, ""
589
+ test_eq? edit_actual(sout), edit_expected(COMPACT_OUTPUT)
590
+ test_eq? serr, ""
581
591
  end
582
592
 
583
593
  end
584
594
 
585
595
 
586
- class PlainReporter_TC < Reporter_TC
596
+ class PlainReporter__Test
597
+ extend NanoTest
598
+ extend ReporterTestHelper
599
+ extend ReporterOutput
587
600
 
588
- it "[!w842j] reports progress." do
601
+ test_subject "[!w842j] reports progress." do
589
602
  sout, serr = run("-sp", @filename)
590
- assert_eq edit_actual(sout), edit_expected(PLAIN_OUTPUT)
591
- assert_eq serr, ""
603
+ test_eq? edit_actual(sout), edit_expected(PLAIN_OUTPUT)
604
+ test_eq? serr, ""
592
605
  end
593
606
 
594
607
  end
595
608
 
596
609
 
597
- class QuietReporter_TC < Reporter_TC
610
+ class QuietReporter__Test
611
+ extend NanoTest
612
+ extend ReporterTestHelper
613
+ extend ReporterOutput
598
614
 
599
- it "[!0z4im] reports all statuses except PASS status." do
615
+ test_subject "[!0z4im] reports all statuses except PASS status." do
600
616
  sout, serr = run("-sq", @filename)
601
- assert_eq edit_actual(sout), edit_expected(QUIET_OUTPUT)
602
- assert_eq serr, ""
617
+ test_eq? edit_actual(sout), edit_expected(QUIET_OUTPUT)
618
+ test_eq? serr, ""
619
+ end
620
+
621
+ end
622
+
623
+
624
+ class DefaultReprotingStyle__Test
625
+ extend NanoTest
626
+ extend ReporterTestHelper
627
+ extend ReporterOutput
628
+
629
+ test_target 'Oktest.DEFAULT_REPORTING_STYLE=()' do
630
+ test_subject "[!lbufd] raises error if unknown style specified." do
631
+ exc = test_exception? ArgumentError do
632
+ Oktest.DEFAULT_REPORTING_STYLE = "foo"
633
+ end
634
+ test_eq? exc.message, "foo: Unknown reporting style."
635
+ end
636
+ test_subject "[!dsbmo] changes value of default reporting style." do
637
+ test_eq? Oktest::DEFAULT_REPORTING_STYLE, "verbose"
638
+ begin
639
+ Oktest.DEFAULT_REPORTING_STYLE = "plain"
640
+ test_eq? Oktest::DEFAULT_REPORTING_STYLE, "plain"
641
+ ensure
642
+ Oktest.DEFAULT_REPORTING_STYLE = "verbose"
643
+ end
644
+ end
603
645
  end
604
646
 
605
647
  end