minitest 5.12.0 → 5.22.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +262 -5
- data/Manifest.txt +3 -0
- data/README.rdoc +90 -17
- data/Rakefile +5 -16
- data/lib/hoe/minitest.rb +0 -4
- data/lib/minitest/assertions.rb +171 -37
- data/lib/minitest/benchmark.rb +7 -7
- data/lib/minitest/compress.rb +94 -0
- data/lib/minitest/expectations.rb +72 -35
- data/lib/minitest/mock.rb +123 -34
- data/lib/minitest/pride_plugin.rb +1 -1
- data/lib/minitest/spec.rb +24 -10
- data/lib/minitest/test.rb +44 -16
- data/lib/minitest/test_task.rb +301 -0
- data/lib/minitest/unit.rb +5 -8
- data/lib/minitest.rb +245 -70
- data/test/minitest/metametameta.rb +45 -11
- data/test/minitest/test_minitest_assertions.rb +357 -29
- data/test/minitest/test_minitest_benchmark.rb +2 -2
- data/test/minitest/test_minitest_mock.rb +287 -15
- data/test/minitest/test_minitest_reporter.rb +158 -17
- data/test/minitest/test_minitest_spec.rb +184 -59
- data/test/minitest/test_minitest_test.rb +362 -42
- data/test/minitest/test_minitest_test_task.rb +46 -0
- data.tar.gz.sig +2 -2
- metadata +28 -19
- metadata.gz.sig +0 -0
@@ -26,9 +26,8 @@ describe Minitest::Spec do
|
|
26
26
|
|
27
27
|
msg = e.message.sub(/(---Backtrace---).*/m, '\1')
|
28
28
|
msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
|
29
|
-
msg.gsub!(/@.+>/, "@PATH>")
|
30
29
|
msg.gsub!(/(\d\.\d{6})\d+/, '\1xxx') # normalize: ruby version, impl, platform
|
31
|
-
msg.gsub!(/:0x[
|
30
|
+
msg.gsub!(/:0x[Xa-fA-F0-9]{4,}[ @].+?>/, ":0xXXXXXX@PATH>")
|
32
31
|
|
33
32
|
if expected
|
34
33
|
@assertion_count += 1
|
@@ -44,6 +43,10 @@ describe Minitest::Spec do
|
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
46
|
+
def assert_success spec
|
47
|
+
assert_equal true, spec
|
48
|
+
end
|
49
|
+
|
47
50
|
before do
|
48
51
|
@assertion_count = 4
|
49
52
|
end
|
@@ -60,10 +63,30 @@ describe Minitest::Spec do
|
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
66
|
+
it "needs to check for file existence" do
|
67
|
+
@assertion_count = 3
|
68
|
+
|
69
|
+
assert_success _(__FILE__).path_must_exist
|
70
|
+
|
71
|
+
assert_triggered "Expected path 'blah' to exist." do
|
72
|
+
_("blah").path_must_exist
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it "needs to check for file non-existence" do
|
77
|
+
@assertion_count = 3
|
78
|
+
|
79
|
+
assert_success _("blah").path_wont_exist
|
80
|
+
|
81
|
+
assert_triggered "Expected path '#{__FILE__}' to not exist." do
|
82
|
+
_(__FILE__).path_wont_exist
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
63
86
|
it "needs to be sensible about must_include order" do
|
64
87
|
@assertion_count += 3 # must_include is 2 assertions
|
65
88
|
|
66
|
-
_(
|
89
|
+
assert_success _([1, 2, 3]).must_include(2)
|
67
90
|
|
68
91
|
assert_triggered "Expected [1, 2, 3] to include 5." do
|
69
92
|
_([1, 2, 3]).must_include 5
|
@@ -77,7 +100,7 @@ describe Minitest::Spec do
|
|
77
100
|
it "needs to be sensible about wont_include order" do
|
78
101
|
@assertion_count += 3 # wont_include is 2 assertions
|
79
102
|
|
80
|
-
_(
|
103
|
+
assert_success _([1, 2, 3]).wont_include(5)
|
81
104
|
|
82
105
|
assert_triggered "Expected [1, 2, 3] to not include 2." do
|
83
106
|
_([1, 2, 3]).wont_include 2
|
@@ -114,11 +137,51 @@ describe Minitest::Spec do
|
|
114
137
|
end
|
115
138
|
end
|
116
139
|
|
140
|
+
def good_pattern
|
141
|
+
capture_io do # 3.0 is noisy
|
142
|
+
eval "[1,2,3] => [Integer, Integer, Integer]" # eval to escape parser for ruby<3
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def bad_pattern
|
147
|
+
capture_io do # 3.0 is noisy
|
148
|
+
eval "[1,2,3] => [Integer, Integer]" # eval to escape parser for ruby<3
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it "needs to pattern match" do
|
153
|
+
@assertion_count = 1
|
154
|
+
|
155
|
+
if RUBY_VERSION > "3" then
|
156
|
+
expect { good_pattern }.must_pattern_match
|
157
|
+
else
|
158
|
+
assert_raises NotImplementedError do
|
159
|
+
expect {}.must_pattern_match
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it "needs to error on bad pattern match" do
|
165
|
+
skip unless RUBY_VERSION > "3"
|
166
|
+
|
167
|
+
@assertion_count = 1
|
168
|
+
|
169
|
+
exp = if RUBY_VERSION.start_with? "3.0"
|
170
|
+
"[1, 2, 3]" # terrible error message!
|
171
|
+
else
|
172
|
+
/length mismatch/
|
173
|
+
end
|
174
|
+
|
175
|
+
assert_triggered exp do
|
176
|
+
expect { bad_pattern }.must_pattern_match
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
117
180
|
it "needs to ensure silence" do
|
118
181
|
@assertion_count -= 1 # no msg
|
119
182
|
@assertion_count += 2 # assert_output is 2 assertions
|
120
183
|
|
121
|
-
|
184
|
+
assert_success expect {}.must_be_silent
|
122
185
|
|
123
186
|
assert_triggered "In stdout.\nExpected: \"\"\n Actual: \"xxx\"" do
|
124
187
|
expect { print "xxx" }.must_be_silent
|
@@ -130,10 +193,10 @@ describe Minitest::Spec do
|
|
130
193
|
|
131
194
|
@assertion_count = 2
|
132
195
|
|
133
|
-
methods =
|
196
|
+
methods = Minitest::Expectations.public_instance_methods.grep(/must|wont/)
|
134
197
|
methods.map!(&:to_s) if Symbol === methods.first
|
135
198
|
|
136
|
-
musts, wonts = methods.sort.partition { |m| m =~
|
199
|
+
musts, wonts = methods.sort.partition { |m| m =~ /must/ }
|
137
200
|
|
138
201
|
expected_musts = %w[must_be
|
139
202
|
must_be_close_to
|
@@ -149,13 +212,15 @@ describe Minitest::Spec do
|
|
149
212
|
must_include
|
150
213
|
must_match
|
151
214
|
must_output
|
215
|
+
must_pattern_match
|
152
216
|
must_raise
|
153
217
|
must_respond_to
|
154
|
-
must_throw
|
218
|
+
must_throw
|
219
|
+
path_must_exist]
|
155
220
|
|
156
221
|
bad = %w[not raise throw send output be_silent]
|
157
222
|
|
158
|
-
expected_wonts = expected_musts.map { |m| m.sub(
|
223
|
+
expected_wonts = expected_musts.map { |m| m.sub(/must/, "wont") }.sort
|
159
224
|
expected_wonts.reject! { |m| m =~ /wont_#{Regexp.union(*bad)}/ }
|
160
225
|
|
161
226
|
_(musts).must_equal expected_musts
|
@@ -175,7 +240,7 @@ describe Minitest::Spec do
|
|
175
240
|
end
|
176
241
|
|
177
242
|
it "needs to verify binary messages" do
|
178
|
-
_(
|
243
|
+
assert_success _(42).wont_be(:<, 24)
|
179
244
|
|
180
245
|
assert_triggered "Expected 24 to not be < 42." do
|
181
246
|
_(24).wont_be :<, 42
|
@@ -189,7 +254,7 @@ describe Minitest::Spec do
|
|
189
254
|
it "needs to verify emptyness" do
|
190
255
|
@assertion_count += 3 # empty is 2 assertions
|
191
256
|
|
192
|
-
_(
|
257
|
+
assert_success _([]).must_be_empty
|
193
258
|
|
194
259
|
assert_triggered "Expected [42] to be empty." do
|
195
260
|
_([42]).must_be_empty
|
@@ -203,7 +268,7 @@ describe Minitest::Spec do
|
|
203
268
|
it "needs to verify equality" do
|
204
269
|
@assertion_count += 1
|
205
270
|
|
206
|
-
_(
|
271
|
+
assert_success _(6 * 7).must_equal(42)
|
207
272
|
|
208
273
|
assert_triggered "Expected: 42\n Actual: 54" do
|
209
274
|
_(6 * 9).must_equal 42
|
@@ -213,7 +278,7 @@ describe Minitest::Spec do
|
|
213
278
|
_(6 * 9).must_equal 42, "msg"
|
214
279
|
end
|
215
280
|
|
216
|
-
assert_triggered(/^-42\n\+#<Proc:0xXXXXXX@PATH>\n/) do
|
281
|
+
assert_triggered(/^-42\n\+#<Proc:0xXXXXXX[ @]PATH>\n/) do
|
217
282
|
_(proc { 42 }).must_equal 42 # proc isn't called, so expectation fails
|
218
283
|
end
|
219
284
|
end
|
@@ -222,7 +287,7 @@ describe Minitest::Spec do
|
|
222
287
|
@assertion_count += 1 # extra test
|
223
288
|
|
224
289
|
out, err = capture_io do
|
225
|
-
_(
|
290
|
+
assert_success _(nil).must_equal(nil)
|
226
291
|
end
|
227
292
|
|
228
293
|
exp = "DEPRECATED: Use assert_nil if expecting nil from #{__FILE__}:#{__LINE__-3}. " \
|
@@ -236,13 +301,13 @@ describe Minitest::Spec do
|
|
236
301
|
it "needs to verify floats outside a delta" do
|
237
302
|
@assertion_count += 1 # extra test
|
238
303
|
|
239
|
-
_(
|
304
|
+
assert_success _(24).wont_be_close_to(42)
|
240
305
|
|
241
306
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= 0.001." do
|
242
307
|
_(6 * 7.0).wont_be_close_to 42
|
243
308
|
end
|
244
309
|
|
245
|
-
x =
|
310
|
+
x = "1.0e-05"
|
246
311
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
247
312
|
_(6 * 7.0).wont_be_close_to 42, 0.00001
|
248
313
|
end
|
@@ -255,14 +320,14 @@ describe Minitest::Spec do
|
|
255
320
|
it "needs to verify floats outside an epsilon" do
|
256
321
|
@assertion_count += 1 # extra test
|
257
322
|
|
258
|
-
_(
|
323
|
+
assert_success _(24).wont_be_within_epsilon(42)
|
259
324
|
|
260
|
-
x =
|
325
|
+
x = "0.042"
|
261
326
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
262
327
|
_(6 * 7.0).wont_be_within_epsilon 42
|
263
328
|
end
|
264
329
|
|
265
|
-
x =
|
330
|
+
x = "0.00042"
|
266
331
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
267
332
|
_(6 * 7.0).wont_be_within_epsilon 42, 0.00001
|
268
333
|
end
|
@@ -275,13 +340,13 @@ describe Minitest::Spec do
|
|
275
340
|
it "needs to verify floats within a delta" do
|
276
341
|
@assertion_count += 1 # extra test
|
277
342
|
|
278
|
-
_(
|
343
|
+
assert_success _(6.0 * 7).must_be_close_to(42.0)
|
279
344
|
|
280
345
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.001." do
|
281
346
|
_(1.0 / 100).must_be_close_to 0.0
|
282
347
|
end
|
283
348
|
|
284
|
-
x =
|
349
|
+
x = "1.0e-06"
|
285
350
|
assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
|
286
351
|
_(1.0 / 1000).must_be_close_to 0.0, 0.000001
|
287
352
|
end
|
@@ -294,7 +359,7 @@ describe Minitest::Spec do
|
|
294
359
|
it "needs to verify floats within an epsilon" do
|
295
360
|
@assertion_count += 1 # extra test
|
296
361
|
|
297
|
-
_(
|
362
|
+
assert_success _(6.0 * 7).must_be_within_epsilon(42.0)
|
298
363
|
|
299
364
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.0." do
|
300
365
|
_(1.0 / 100).must_be_within_epsilon 0.0
|
@@ -310,7 +375,7 @@ describe Minitest::Spec do
|
|
310
375
|
end
|
311
376
|
|
312
377
|
it "needs to verify identity" do
|
313
|
-
_(
|
378
|
+
assert_success _(1).must_be_same_as(1)
|
314
379
|
|
315
380
|
assert_triggered "Expected 1 (oid=N) to be the same as 2 (oid=N)." do
|
316
381
|
_(1).must_be_same_as 2
|
@@ -323,8 +388,8 @@ describe Minitest::Spec do
|
|
323
388
|
|
324
389
|
it "needs to verify inequality" do
|
325
390
|
@assertion_count += 2
|
326
|
-
_(
|
327
|
-
_(
|
391
|
+
assert_success _(42).wont_equal(6 * 9)
|
392
|
+
assert_success _(proc {}).wont_equal(42)
|
328
393
|
|
329
394
|
assert_triggered "Expected 1 to not be equal to 1." do
|
330
395
|
_(1).wont_equal 1
|
@@ -336,7 +401,7 @@ describe Minitest::Spec do
|
|
336
401
|
end
|
337
402
|
|
338
403
|
it "needs to verify instances of a class" do
|
339
|
-
_(
|
404
|
+
assert_success _(42).wont_be_instance_of(String)
|
340
405
|
|
341
406
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
342
407
|
_(42).wont_be_kind_of Int
|
@@ -350,8 +415,8 @@ describe Minitest::Spec do
|
|
350
415
|
it "needs to verify kinds of a class" do
|
351
416
|
@assertion_count += 2
|
352
417
|
|
353
|
-
_(
|
354
|
-
_(
|
418
|
+
assert_success _(42).wont_be_kind_of(String)
|
419
|
+
assert_success _(proc {}).wont_be_kind_of(String)
|
355
420
|
|
356
421
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
357
422
|
_(42).wont_be_kind_of Int
|
@@ -365,8 +430,8 @@ describe Minitest::Spec do
|
|
365
430
|
it "needs to verify kinds of objects" do
|
366
431
|
@assertion_count += 3 # extra test
|
367
432
|
|
368
|
-
_(
|
369
|
-
_(
|
433
|
+
assert_success _(6 * 7).must_be_kind_of(Int)
|
434
|
+
assert_success _(6 * 7).must_be_kind_of(Numeric)
|
370
435
|
|
371
436
|
assert_triggered "Expected 42 to be a kind of String, not #{Int.name}." do
|
372
437
|
_(6 * 7).must_be_kind_of String
|
@@ -385,7 +450,7 @@ describe Minitest::Spec do
|
|
385
450
|
it "needs to verify mismatch" do
|
386
451
|
@assertion_count += 3 # match is 2
|
387
452
|
|
388
|
-
_(
|
453
|
+
assert_success _("blah").wont_match(/\d+/)
|
389
454
|
|
390
455
|
assert_triggered "Expected /\\w+/ to not match \"blah\"." do
|
391
456
|
_("blah").wont_match(/\w+/)
|
@@ -397,7 +462,7 @@ describe Minitest::Spec do
|
|
397
462
|
end
|
398
463
|
|
399
464
|
it "needs to verify nil" do
|
400
|
-
_(
|
465
|
+
assert_success _(nil).must_be_nil
|
401
466
|
|
402
467
|
assert_triggered "Expected 42 to be nil." do
|
403
468
|
_(42).must_be_nil
|
@@ -411,7 +476,7 @@ describe Minitest::Spec do
|
|
411
476
|
it "needs to verify non-emptyness" do
|
412
477
|
@assertion_count += 3 # empty is 2 assertions
|
413
478
|
|
414
|
-
_(
|
479
|
+
assert_success _(["some item"]).wont_be_empty
|
415
480
|
|
416
481
|
assert_triggered "Expected [] to not be empty." do
|
417
482
|
_([]).wont_be_empty
|
@@ -423,7 +488,7 @@ describe Minitest::Spec do
|
|
423
488
|
end
|
424
489
|
|
425
490
|
it "needs to verify non-identity" do
|
426
|
-
_(
|
491
|
+
assert_success _(1).wont_be_same_as(2)
|
427
492
|
|
428
493
|
assert_triggered "Expected 1 (oid=N) to not be the same as 1 (oid=N)." do
|
429
494
|
_(1).wont_be_same_as 1
|
@@ -435,7 +500,7 @@ describe Minitest::Spec do
|
|
435
500
|
end
|
436
501
|
|
437
502
|
it "needs to verify non-nil" do
|
438
|
-
_(
|
503
|
+
assert_success _(42).wont_be_nil
|
439
504
|
|
440
505
|
assert_triggered "Expected nil to not be nil." do
|
441
506
|
_(nil).wont_be_nil
|
@@ -447,7 +512,7 @@ describe Minitest::Spec do
|
|
447
512
|
end
|
448
513
|
|
449
514
|
it "needs to verify objects not responding to a message" do
|
450
|
-
_(
|
515
|
+
assert_success _("").wont_respond_to(:woot!)
|
451
516
|
|
452
517
|
assert_triggered "Expected \"\" to not respond to to_s." do
|
453
518
|
_("").wont_respond_to :to_s
|
@@ -461,7 +526,7 @@ describe Minitest::Spec do
|
|
461
526
|
it "needs to verify output in stderr" do
|
462
527
|
@assertion_count -= 1 # no msg
|
463
528
|
|
464
|
-
|
529
|
+
assert_success expect { $stderr.print "blah" }.must_output(nil, "blah")
|
465
530
|
|
466
531
|
assert_triggered "In stderr.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
467
532
|
expect { $stderr.print "xxx" }.must_output(nil, "blah")
|
@@ -471,7 +536,7 @@ describe Minitest::Spec do
|
|
471
536
|
it "needs to verify output in stdout" do
|
472
537
|
@assertion_count -= 1 # no msg
|
473
538
|
|
474
|
-
|
539
|
+
assert_success expect { print "blah" }.must_output("blah")
|
475
540
|
|
476
541
|
assert_triggered "In stdout.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
477
542
|
expect { print "xxx" }.must_output("blah")
|
@@ -481,7 +546,7 @@ describe Minitest::Spec do
|
|
481
546
|
it "needs to verify regexp matches" do
|
482
547
|
@assertion_count += 3 # must_match is 2 assertions
|
483
548
|
|
484
|
-
_(
|
549
|
+
assert_kind_of MatchData, _("blah").must_match(/\w+/)
|
485
550
|
|
486
551
|
assert_triggered "Expected /\\d+/ to match \"blah\"." do
|
487
552
|
_("blah").must_match(/\d+/)
|
@@ -547,12 +612,29 @@ describe Minitest::Spec do
|
|
547
612
|
(1 + 1).must_equal 2
|
548
613
|
end
|
549
614
|
end
|
615
|
+
|
616
|
+
# https://github.com/seattlerb/minitest/issues/837
|
617
|
+
# https://github.com/rails/rails/pull/39304
|
618
|
+
it "deprecates expectation used without _ with empty backtrace_filter" do
|
619
|
+
skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
|
620
|
+
|
621
|
+
@assertion_count += 3
|
622
|
+
|
623
|
+
exp = /DEPRECATED: global use of must_equal from/
|
624
|
+
|
625
|
+
with_empty_backtrace_filter do
|
626
|
+
assert_output "", exp do
|
627
|
+
(1 + 1).must_equal 2
|
628
|
+
end
|
629
|
+
end
|
630
|
+
end
|
550
631
|
end
|
551
632
|
|
552
633
|
it "needs to verify throw" do
|
553
|
-
@assertion_count +=
|
634
|
+
@assertion_count += 4 # 2 extra tests
|
554
635
|
|
555
|
-
|
636
|
+
assert_nil expect { throw :blah }.must_throw(:blah)
|
637
|
+
assert_equal 42, expect { throw :blah, 42 }.must_throw(:blah)
|
556
638
|
|
557
639
|
assert_triggered "Expected :blah to have been thrown." do
|
558
640
|
expect {}.must_throw :blah
|
@@ -572,7 +654,7 @@ describe Minitest::Spec do
|
|
572
654
|
end
|
573
655
|
|
574
656
|
it "needs to verify types of objects" do
|
575
|
-
_(
|
657
|
+
assert_success _(6 * 7).must_be_instance_of(Int)
|
576
658
|
|
577
659
|
exp = "Expected 42 to be an instance of String, not #{Int.name}."
|
578
660
|
|
@@ -588,7 +670,7 @@ describe Minitest::Spec do
|
|
588
670
|
it "needs to verify using any (negative) predicate" do
|
589
671
|
@assertion_count -= 1 # doesn"t take a message
|
590
672
|
|
591
|
-
_(
|
673
|
+
assert_success _("blah").wont_be(:empty?)
|
592
674
|
|
593
675
|
assert_triggered "Expected \"\" to not be empty?." do
|
594
676
|
_("").wont_be :empty?
|
@@ -598,7 +680,7 @@ describe Minitest::Spec do
|
|
598
680
|
it "needs to verify using any binary operator" do
|
599
681
|
@assertion_count -= 1 # no msg
|
600
682
|
|
601
|
-
_(
|
683
|
+
assert_success _(41).must_be(:<, 42)
|
602
684
|
|
603
685
|
assert_triggered "Expected 42 to be < 41." do
|
604
686
|
_(42).must_be(:<, 41)
|
@@ -608,7 +690,7 @@ describe Minitest::Spec do
|
|
608
690
|
it "needs to verify using any predicate" do
|
609
691
|
@assertion_count -= 1 # no msg
|
610
692
|
|
611
|
-
_(
|
693
|
+
assert_success _("").must_be(:empty?)
|
612
694
|
|
613
695
|
assert_triggered "Expected \"blah\" to be empty?." do
|
614
696
|
_("blah").must_be :empty?
|
@@ -616,7 +698,7 @@ describe Minitest::Spec do
|
|
616
698
|
end
|
617
699
|
|
618
700
|
it "needs to verify using respond_to" do
|
619
|
-
_(
|
701
|
+
assert_success _(42).must_respond_to(:+)
|
620
702
|
|
621
703
|
assert_triggered "Expected 42 (#{Int.name}) to respond to #clear." do
|
622
704
|
_(42).must_respond_to :clear
|
@@ -703,6 +785,10 @@ describe Minitest::Spec, :subject do
|
|
703
785
|
end
|
704
786
|
|
705
787
|
class TestMetaStatic < Minitest::Test
|
788
|
+
def assert_method_count expected, klass
|
789
|
+
assert_equal expected, klass.public_instance_methods.grep(/^test_/).count
|
790
|
+
end
|
791
|
+
|
706
792
|
def test_children
|
707
793
|
Minitest::Spec.children.clear # prevents parallel run
|
708
794
|
|
@@ -736,8 +822,8 @@ class TestMetaStatic < Minitest::Test
|
|
736
822
|
end
|
737
823
|
end
|
738
824
|
|
739
|
-
|
740
|
-
|
825
|
+
assert_method_count 1, outer
|
826
|
+
assert_method_count 1, inner
|
741
827
|
end
|
742
828
|
|
743
829
|
def test_it_wont_add_test_methods_to_children
|
@@ -751,14 +837,18 @@ class TestMetaStatic < Minitest::Test
|
|
751
837
|
end
|
752
838
|
end
|
753
839
|
|
754
|
-
|
755
|
-
|
840
|
+
assert_method_count 1, outer
|
841
|
+
assert_method_count 0, inner
|
756
842
|
end
|
757
843
|
end
|
758
844
|
|
759
845
|
class TestMeta < MetaMetaMetaTestCase
|
760
846
|
# do not call parallelize_me! here because specs use register_spec_type globally
|
761
847
|
|
848
|
+
def assert_defined_methods expected, klass
|
849
|
+
assert_equal expected, klass.instance_methods(false).sort.map(&:to_s)
|
850
|
+
end
|
851
|
+
|
762
852
|
def util_structure
|
763
853
|
y = z = nil
|
764
854
|
before_list = []
|
@@ -831,7 +921,7 @@ class TestMeta < MetaMetaMetaTestCase
|
|
831
921
|
end
|
832
922
|
end
|
833
923
|
|
834
|
-
test_name = spec_class.instance_methods.sort.grep(/
|
924
|
+
test_name = spec_class.instance_methods.sort.grep(/test_/).first
|
835
925
|
|
836
926
|
spec = spec_class.new test_name
|
837
927
|
|
@@ -880,9 +970,9 @@ class TestMeta < MetaMetaMetaTestCase
|
|
880
970
|
inner_methods2 = inner_methods1 +
|
881
971
|
%w[test_0002_anonymous test_0003_anonymous]
|
882
972
|
|
883
|
-
|
884
|
-
|
885
|
-
|
973
|
+
assert_defined_methods top_methods, x
|
974
|
+
assert_defined_methods inner_methods1, y
|
975
|
+
assert_defined_methods inner_methods2, z
|
886
976
|
end
|
887
977
|
|
888
978
|
def test_structure_postfix_it
|
@@ -899,8 +989,8 @@ class TestMeta < MetaMetaMetaTestCase
|
|
899
989
|
it "inner-it" do end
|
900
990
|
end
|
901
991
|
|
902
|
-
|
903
|
-
|
992
|
+
assert_defined_methods %w[test_0001_inner-it], y
|
993
|
+
assert_defined_methods %w[test_0001_inner-it], z
|
904
994
|
end
|
905
995
|
|
906
996
|
def test_setup_teardown_behavior
|
@@ -931,9 +1021,9 @@ class TestMeta < MetaMetaMetaTestCase
|
|
931
1021
|
].sort
|
932
1022
|
|
933
1023
|
assert_equal test_methods, [x1, x2]
|
934
|
-
|
935
|
-
|
936
|
-
|
1024
|
+
assert_defined_methods test_methods, x
|
1025
|
+
assert_defined_methods [], y
|
1026
|
+
assert_defined_methods [], z
|
937
1027
|
end
|
938
1028
|
|
939
1029
|
def test_structure_subclasses
|
@@ -1019,3 +1109,38 @@ class ValueMonadTest < Minitest::Test
|
|
1019
1109
|
assert_equal "c", struct.expect
|
1020
1110
|
end
|
1021
1111
|
end
|
1112
|
+
|
1113
|
+
describe Minitest::Spec, :infect_an_assertion do
|
1114
|
+
class << self
|
1115
|
+
attr_accessor :infect_mock
|
1116
|
+
end
|
1117
|
+
|
1118
|
+
def assert_infects exp, act, msg = nil, foo: nil, bar: nil
|
1119
|
+
self.class.infect_mock.assert_infects exp, act, msg, foo: foo, bar: bar
|
1120
|
+
end
|
1121
|
+
|
1122
|
+
infect_an_assertion :assert_infects, :must_infect
|
1123
|
+
infect_an_assertion :assert_infects, :must_infect_without_flipping, :dont_flip
|
1124
|
+
|
1125
|
+
it "infects assertions with kwargs" do
|
1126
|
+
mock = Minitest::Mock.new
|
1127
|
+
mock.expect :assert_infects, true, [:exp, :act, nil], foo: :foo, bar: :bar
|
1128
|
+
|
1129
|
+
self.class.infect_mock = mock
|
1130
|
+
|
1131
|
+
_(:act).must_infect :exp, foo: :foo, bar: :bar
|
1132
|
+
|
1133
|
+
assert_mock mock
|
1134
|
+
end
|
1135
|
+
|
1136
|
+
it "infects assertions with kwargs (dont_flip)" do
|
1137
|
+
mock = Minitest::Mock.new
|
1138
|
+
mock.expect :assert_infects, true, [:act, :exp, nil], foo: :foo, bar: :bar
|
1139
|
+
|
1140
|
+
self.class.infect_mock = mock
|
1141
|
+
|
1142
|
+
_(:act).must_infect_without_flipping :exp, foo: :foo, bar: :bar
|
1143
|
+
|
1144
|
+
assert_mock mock
|
1145
|
+
end
|
1146
|
+
end
|