minitest 5.12.1 → 5.14.2
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +59 -3
- data/README.rdoc +1 -0
- data/Rakefile +4 -2
- data/lib/minitest.rb +28 -13
- data/lib/minitest/assertions.rb +100 -19
- data/lib/minitest/expectations.rb +54 -35
- data/lib/minitest/spec.rb +15 -8
- data/test/minitest/metametameta.rb +39 -8
- data/test/minitest/test_minitest_assertions.rb +193 -7
- data/test/minitest/test_minitest_mock.rb +0 -2
- data/test/minitest/test_minitest_spec.rb +85 -45
- data/test/minitest/test_minitest_test.rb +42 -13
- metadata +21 -16
- metadata.gz.sig +0 -0
data/lib/minitest/spec.rb
CHANGED
@@ -289,21 +289,28 @@ class Minitest::Spec < Minitest::Test
|
|
289
289
|
|
290
290
|
module InstanceMethods
|
291
291
|
##
|
292
|
-
#
|
293
|
-
# available to it.
|
292
|
+
# Takes a value or a block and returns a value monad that has
|
293
|
+
# all of Expectations methods available to it.
|
294
294
|
#
|
295
|
-
#
|
295
|
+
# _(1 + 1).must_equal 2
|
296
296
|
#
|
297
|
-
#
|
298
|
-
#
|
299
|
-
#
|
297
|
+
# And for blocks:
|
298
|
+
#
|
299
|
+
# _ { 1 + "1" }.must_raise TypeError
|
300
300
|
#
|
301
301
|
# This method of expectation-based testing is preferable to
|
302
302
|
# straight-expectation methods (on Object) because it stores its
|
303
303
|
# test context, bypassing our hacky use of thread-local variables.
|
304
304
|
#
|
305
|
-
# At some point, the methods on Object will be deprecated
|
306
|
-
# removed.
|
305
|
+
# NOTE: At some point, the methods on Object will be deprecated
|
306
|
+
# and then removed.
|
307
|
+
#
|
308
|
+
# It is also aliased to #value and #expect for your aesthetic
|
309
|
+
# pleasure:
|
310
|
+
#
|
311
|
+
# _(1 + 1).must_equal 2
|
312
|
+
# value(1 + 1).must_equal 2
|
313
|
+
# expect(1 + 1).must_equal 2
|
307
314
|
|
308
315
|
def _ value = nil, &block
|
309
316
|
Minitest::Expectation.new block || value, self
|
@@ -6,8 +6,27 @@ class Minitest::Test
|
|
6
6
|
def clean s
|
7
7
|
s.gsub(/^ {6}/, "")
|
8
8
|
end
|
9
|
+
|
10
|
+
def with_empty_backtrace_filter
|
11
|
+
original = Minitest.backtrace_filter
|
12
|
+
|
13
|
+
obj = Minitest::BacktraceFilter.new
|
14
|
+
def obj.filter _bt
|
15
|
+
[]
|
16
|
+
end
|
17
|
+
|
18
|
+
Minitest::Test.io_lock.synchronize do # try not to trounce in parallel
|
19
|
+
begin
|
20
|
+
Minitest.backtrace_filter = obj
|
21
|
+
yield
|
22
|
+
ensure
|
23
|
+
Minitest.backtrace_filter = original
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
9
27
|
end
|
10
28
|
|
29
|
+
|
11
30
|
class FakeNamedTest < Minitest::Test
|
12
31
|
@@count = 0
|
13
32
|
|
@@ -25,6 +44,14 @@ class AnError < StandardError; include MyModule; end
|
|
25
44
|
class MetaMetaMetaTestCase < Minitest::Test
|
26
45
|
attr_accessor :reporter, :output, :tu
|
27
46
|
|
47
|
+
def with_stderr err
|
48
|
+
old = $stderr
|
49
|
+
$stderr = err
|
50
|
+
yield
|
51
|
+
ensure
|
52
|
+
$stderr = old
|
53
|
+
end
|
54
|
+
|
28
55
|
def run_tu_with_fresh_reporter flags = %w[--seed 42]
|
29
56
|
options = Minitest.process_args flags
|
30
57
|
|
@@ -34,18 +61,20 @@ class MetaMetaMetaTestCase < Minitest::Test
|
|
34
61
|
reporter << Minitest::SummaryReporter.new(@output, options)
|
35
62
|
reporter << Minitest::ProgressReporter.new(@output, options)
|
36
63
|
|
37
|
-
|
64
|
+
with_stderr @output do
|
65
|
+
reporter.start
|
38
66
|
|
39
|
-
|
67
|
+
yield(reporter) if block_given?
|
40
68
|
|
41
|
-
|
42
|
-
|
43
|
-
|
69
|
+
@tus ||= [@tu]
|
70
|
+
@tus.each do |tu|
|
71
|
+
Minitest::Runnable.runnables.delete tu
|
44
72
|
|
45
|
-
|
46
|
-
|
73
|
+
tu.run reporter, options
|
74
|
+
end
|
47
75
|
|
48
|
-
|
76
|
+
reporter.report
|
77
|
+
end
|
49
78
|
end
|
50
79
|
|
51
80
|
def first_reporter
|
@@ -84,6 +113,8 @@ class MetaMetaMetaTestCase < Minitest::Test
|
|
84
113
|
output.gsub!(/^(\s+)[^:]+:\d+:in/, '\1FILE:LINE:in')
|
85
114
|
end
|
86
115
|
|
116
|
+
output.gsub!(/( at )[^:]+:\d+/, '\1[FILE:LINE]')
|
117
|
+
|
87
118
|
output
|
88
119
|
end
|
89
120
|
|
@@ -77,6 +77,14 @@ class TestMinitestAssertions < Minitest::Test
|
|
77
77
|
self.send assert_msg, expected, msg
|
78
78
|
end
|
79
79
|
|
80
|
+
def assert_unexpected expected
|
81
|
+
expected = Regexp.new expected if String === expected
|
82
|
+
|
83
|
+
assert_triggered expected, Minitest::UnexpectedError do
|
84
|
+
yield
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
80
88
|
def clean s
|
81
89
|
s.gsub(/^ {6,10}/, "")
|
82
90
|
end
|
@@ -397,7 +405,7 @@ class TestMinitestAssertions < Minitest::Test
|
|
397
405
|
end
|
398
406
|
|
399
407
|
def test_assert_in_delta_triggered
|
400
|
-
x =
|
408
|
+
x = "1.0e-06"
|
401
409
|
assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
|
402
410
|
@tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
|
403
411
|
end
|
@@ -428,7 +436,7 @@ class TestMinitestAssertions < Minitest::Test
|
|
428
436
|
|
429
437
|
def test_assert_in_epsilon_triggered_negative_case
|
430
438
|
x = (RUBY18 and not maglev?) ? "0.1" : "0.100000xxx"
|
431
|
-
y =
|
439
|
+
y = "0.1"
|
432
440
|
assert_triggered "Expected |-1.1 - -1| (#{x}) to be <= #{y}." do
|
433
441
|
@tc.assert_in_epsilon(-1.1, -1, 0.1)
|
434
442
|
end
|
@@ -603,12 +611,117 @@ class TestMinitestAssertions < Minitest::Test
|
|
603
611
|
end
|
604
612
|
end
|
605
613
|
|
606
|
-
def
|
614
|
+
def test_assert_output_no_block
|
607
615
|
assert_triggered "assert_output requires a block to capture output." do
|
608
616
|
@tc.assert_output "blah"
|
609
617
|
end
|
610
618
|
end
|
611
619
|
|
620
|
+
def test_assert_output_nested_assert_uncaught
|
621
|
+
@assertion_count = 1
|
622
|
+
|
623
|
+
assert_triggered "Epic Fail!" do
|
624
|
+
@tc.assert_output "blah\n" do
|
625
|
+
puts "blah"
|
626
|
+
@tc.flunk
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
def test_assert_output_nested_raise
|
632
|
+
@assertion_count = 2
|
633
|
+
|
634
|
+
@tc.assert_output "blah\n" do
|
635
|
+
@tc.assert_raises RuntimeError do
|
636
|
+
puts "blah"
|
637
|
+
raise "boom!"
|
638
|
+
end
|
639
|
+
end
|
640
|
+
end
|
641
|
+
|
642
|
+
def test_assert_output_nested_raise_bad
|
643
|
+
@assertion_count = 0
|
644
|
+
|
645
|
+
assert_unexpected "boom!" do
|
646
|
+
@tc.assert_raises do # 2) bypassed via UnexpectedError
|
647
|
+
@tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
|
648
|
+
puts "not_blah"
|
649
|
+
raise "boom!"
|
650
|
+
end
|
651
|
+
end
|
652
|
+
end
|
653
|
+
end
|
654
|
+
|
655
|
+
def test_assert_output_nested_raise_mismatch
|
656
|
+
# this test is redundant, but illustrative
|
657
|
+
@assertion_count = 0
|
658
|
+
|
659
|
+
assert_unexpected "boom!" do
|
660
|
+
@tc.assert_raises RuntimeError do # 2) bypassed via UnexpectedError
|
661
|
+
@tc.assert_output "blah\n" do # 1) captures and raises UnexpectedError
|
662
|
+
puts "not_blah"
|
663
|
+
raise ArgumentError, "boom!"
|
664
|
+
end
|
665
|
+
end
|
666
|
+
end
|
667
|
+
end
|
668
|
+
|
669
|
+
def test_assert_output_nested_throw_caught
|
670
|
+
@assertion_count = 2
|
671
|
+
|
672
|
+
@tc.assert_output "blah\n" do
|
673
|
+
@tc.assert_throws :boom! do
|
674
|
+
puts "blah"
|
675
|
+
throw :boom!
|
676
|
+
end
|
677
|
+
end
|
678
|
+
end
|
679
|
+
|
680
|
+
def test_assert_output_nested_throw_caught_bad
|
681
|
+
@assertion_count = 1 # want 0; can't prevent throw from escaping :(
|
682
|
+
|
683
|
+
@tc.assert_throws :boom! do # 2) captured via catch
|
684
|
+
@tc.assert_output "blah\n" do # 1) bypassed via throw
|
685
|
+
puts "not_blah"
|
686
|
+
throw :boom!
|
687
|
+
end
|
688
|
+
end
|
689
|
+
end
|
690
|
+
|
691
|
+
def test_assert_output_nested_throw_mismatch
|
692
|
+
@assertion_count = 0
|
693
|
+
|
694
|
+
assert_unexpected "uncaught throw :boom!" do
|
695
|
+
@tc.assert_throws :not_boom! do # 2) captured via assert_throws+rescue
|
696
|
+
@tc.assert_output "blah\n" do # 1) bypassed via throw
|
697
|
+
puts "not_blah"
|
698
|
+
throw :boom!
|
699
|
+
end
|
700
|
+
end
|
701
|
+
end
|
702
|
+
end
|
703
|
+
|
704
|
+
def test_assert_output_uncaught_raise
|
705
|
+
@assertion_count = 0
|
706
|
+
|
707
|
+
assert_unexpected "RuntimeError: boom!" do
|
708
|
+
@tc.assert_output "blah\n" do
|
709
|
+
puts "not_blah"
|
710
|
+
raise "boom!"
|
711
|
+
end
|
712
|
+
end
|
713
|
+
end
|
714
|
+
|
715
|
+
def test_assert_output_uncaught_throw
|
716
|
+
@assertion_count = 0
|
717
|
+
|
718
|
+
assert_unexpected "uncaught throw :boom!" do
|
719
|
+
@tc.assert_output "blah\n" do
|
720
|
+
puts "not_blah"
|
721
|
+
throw :boom!
|
722
|
+
end
|
723
|
+
end
|
724
|
+
end
|
612
725
|
def test_assert_predicate
|
613
726
|
@tc.assert_predicate "", :empty?
|
614
727
|
end
|
@@ -671,6 +784,19 @@ class TestMinitestAssertions < Minitest::Test
|
|
671
784
|
end
|
672
785
|
end
|
673
786
|
|
787
|
+
def test_assert_raises_throw_nested_bad
|
788
|
+
@assertion_count = 0
|
789
|
+
|
790
|
+
assert_unexpected "RuntimeError: boom!" do
|
791
|
+
@tc.assert_raises do
|
792
|
+
@tc.assert_throws :blah do
|
793
|
+
raise "boom!"
|
794
|
+
throw :not_blah
|
795
|
+
end
|
796
|
+
end
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
674
800
|
##
|
675
801
|
# *sigh* This is quite an odd scenario, but it is from real (albeit
|
676
802
|
# ugly) test code in ruby-core:
|
@@ -875,7 +1001,9 @@ class TestMinitestAssertions < Minitest::Test
|
|
875
1001
|
end
|
876
1002
|
|
877
1003
|
def test_assert_throws_argument_exception
|
878
|
-
@
|
1004
|
+
@assertion_count = 0
|
1005
|
+
|
1006
|
+
assert_unexpected "ArgumentError" do
|
879
1007
|
@tc.assert_throws :blah do
|
880
1008
|
raise ArgumentError
|
881
1009
|
end
|
@@ -891,7 +1019,9 @@ class TestMinitestAssertions < Minitest::Test
|
|
891
1019
|
end
|
892
1020
|
|
893
1021
|
def test_assert_throws_name_error
|
894
|
-
@
|
1022
|
+
@assertion_count = 0
|
1023
|
+
|
1024
|
+
assert_unexpected "NameError" do
|
895
1025
|
@tc.assert_throws :blah do
|
896
1026
|
raise NameError
|
897
1027
|
end
|
@@ -906,6 +1036,16 @@ class TestMinitestAssertions < Minitest::Test
|
|
906
1036
|
end
|
907
1037
|
end
|
908
1038
|
|
1039
|
+
def test_assert_path_exists
|
1040
|
+
@tc.assert_path_exists __FILE__
|
1041
|
+
end
|
1042
|
+
|
1043
|
+
def test_assert_path_exists_triggered
|
1044
|
+
assert_triggered "Expected path 'blah' to exist." do
|
1045
|
+
@tc.assert_path_exists "blah"
|
1046
|
+
end
|
1047
|
+
end
|
1048
|
+
|
909
1049
|
def test_capture_io
|
910
1050
|
@assertion_count = 0
|
911
1051
|
|
@@ -978,6 +1118,23 @@ class TestMinitestAssertions < Minitest::Test
|
|
978
1118
|
end
|
979
1119
|
end
|
980
1120
|
|
1121
|
+
def assert_fail_after t
|
1122
|
+
@tc.fail_after t.year, t.month, t.day, "remove the deprecations"
|
1123
|
+
end
|
1124
|
+
|
1125
|
+
def test_fail_after
|
1126
|
+
d0 = Time.now
|
1127
|
+
d1 = d0 + 86_400 # I am an idiot
|
1128
|
+
|
1129
|
+
assert_silent do
|
1130
|
+
assert_fail_after d1
|
1131
|
+
end
|
1132
|
+
|
1133
|
+
assert_triggered "remove the deprecations" do
|
1134
|
+
assert_fail_after d0
|
1135
|
+
end
|
1136
|
+
end
|
1137
|
+
|
981
1138
|
def test_flunk
|
982
1139
|
assert_triggered "Epic Fail!" do
|
983
1140
|
@tc.flunk
|
@@ -997,7 +1154,7 @@ class TestMinitestAssertions < Minitest::Test
|
|
997
1154
|
def test_refute
|
998
1155
|
@assertion_count = 2
|
999
1156
|
|
1000
|
-
@tc.assert_equal
|
1157
|
+
@tc.assert_equal true, @tc.refute(false), "returns true on success"
|
1001
1158
|
end
|
1002
1159
|
|
1003
1160
|
def test_refute_empty
|
@@ -1029,7 +1186,7 @@ class TestMinitestAssertions < Minitest::Test
|
|
1029
1186
|
end
|
1030
1187
|
|
1031
1188
|
def test_refute_in_delta_triggered
|
1032
|
-
x =
|
1189
|
+
x = "0.1"
|
1033
1190
|
assert_triggered "Expected |0.0 - 0.001| (0.001) to not be <= #{x}." do
|
1034
1191
|
@tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
|
1035
1192
|
end
|
@@ -1171,6 +1328,16 @@ class TestMinitestAssertions < Minitest::Test
|
|
1171
1328
|
end
|
1172
1329
|
end
|
1173
1330
|
|
1331
|
+
def test_refute_path_exists
|
1332
|
+
@tc.refute_path_exists "blah"
|
1333
|
+
end
|
1334
|
+
|
1335
|
+
def test_refute_path_exists_triggered
|
1336
|
+
assert_triggered "Expected path '#{__FILE__}' to not exist." do
|
1337
|
+
@tc.refute_path_exists __FILE__
|
1338
|
+
end
|
1339
|
+
end
|
1340
|
+
|
1174
1341
|
def test_skip
|
1175
1342
|
@assertion_count = 0
|
1176
1343
|
|
@@ -1179,6 +1346,25 @@ class TestMinitestAssertions < Minitest::Test
|
|
1179
1346
|
end
|
1180
1347
|
end
|
1181
1348
|
|
1349
|
+
def assert_skip_until t, msg
|
1350
|
+
@tc.skip_until t.year, t.month, t.day, msg
|
1351
|
+
end
|
1352
|
+
|
1353
|
+
def test_skip_until
|
1354
|
+
@assertion_count = 0
|
1355
|
+
|
1356
|
+
d0 = Time.now
|
1357
|
+
d1 = d0 + 86_400 # I am an idiot
|
1358
|
+
|
1359
|
+
assert_output "", /Stale skip_until \"not yet\" at .*?:\d+$/ do
|
1360
|
+
assert_skip_until d0, "not yet"
|
1361
|
+
end
|
1362
|
+
|
1363
|
+
assert_triggered "not ready yet", Minitest::Skip do
|
1364
|
+
assert_skip_until d1, "not ready yet"
|
1365
|
+
end
|
1366
|
+
end
|
1367
|
+
|
1182
1368
|
def util_msg exp, act, msg = nil
|
1183
1369
|
s = "Expected: #{exp.inspect}\n Actual: #{act.inspect}"
|
1184
1370
|
s = "#{msg}.\n#{s}" if msg
|
@@ -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
|
@@ -118,7 +141,7 @@ describe Minitest::Spec do
|
|
118
141
|
@assertion_count -= 1 # no msg
|
119
142
|
@assertion_count += 2 # assert_output is 2 assertions
|
120
143
|
|
121
|
-
|
144
|
+
assert_success expect {}.must_be_silent
|
122
145
|
|
123
146
|
assert_triggered "In stdout.\nExpected: \"\"\n Actual: \"xxx\"" do
|
124
147
|
expect { print "xxx" }.must_be_silent
|
@@ -130,10 +153,10 @@ describe Minitest::Spec do
|
|
130
153
|
|
131
154
|
@assertion_count = 2
|
132
155
|
|
133
|
-
methods =
|
156
|
+
methods = Minitest::Expectations.public_instance_methods.grep(/must|wont/)
|
134
157
|
methods.map!(&:to_s) if Symbol === methods.first
|
135
158
|
|
136
|
-
musts, wonts = methods.sort.partition { |m| m =~
|
159
|
+
musts, wonts = methods.sort.partition { |m| m =~ /must/ }
|
137
160
|
|
138
161
|
expected_musts = %w[must_be
|
139
162
|
must_be_close_to
|
@@ -151,11 +174,12 @@ describe Minitest::Spec do
|
|
151
174
|
must_output
|
152
175
|
must_raise
|
153
176
|
must_respond_to
|
154
|
-
must_throw
|
177
|
+
must_throw
|
178
|
+
path_must_exist]
|
155
179
|
|
156
180
|
bad = %w[not raise throw send output be_silent]
|
157
181
|
|
158
|
-
expected_wonts = expected_musts.map { |m| m.sub(
|
182
|
+
expected_wonts = expected_musts.map { |m| m.sub(/must/, "wont") }.sort
|
159
183
|
expected_wonts.reject! { |m| m =~ /wont_#{Regexp.union(*bad)}/ }
|
160
184
|
|
161
185
|
_(musts).must_equal expected_musts
|
@@ -175,7 +199,7 @@ describe Minitest::Spec do
|
|
175
199
|
end
|
176
200
|
|
177
201
|
it "needs to verify binary messages" do
|
178
|
-
_(
|
202
|
+
assert_success _(42).wont_be(:<, 24)
|
179
203
|
|
180
204
|
assert_triggered "Expected 24 to not be < 42." do
|
181
205
|
_(24).wont_be :<, 42
|
@@ -189,7 +213,7 @@ describe Minitest::Spec do
|
|
189
213
|
it "needs to verify emptyness" do
|
190
214
|
@assertion_count += 3 # empty is 2 assertions
|
191
215
|
|
192
|
-
_(
|
216
|
+
assert_success _([]).must_be_empty
|
193
217
|
|
194
218
|
assert_triggered "Expected [42] to be empty." do
|
195
219
|
_([42]).must_be_empty
|
@@ -203,7 +227,7 @@ describe Minitest::Spec do
|
|
203
227
|
it "needs to verify equality" do
|
204
228
|
@assertion_count += 1
|
205
229
|
|
206
|
-
_(
|
230
|
+
assert_success _(6 * 7).must_equal(42)
|
207
231
|
|
208
232
|
assert_triggered "Expected: 42\n Actual: 54" do
|
209
233
|
_(6 * 9).must_equal 42
|
@@ -213,7 +237,7 @@ describe Minitest::Spec do
|
|
213
237
|
_(6 * 9).must_equal 42, "msg"
|
214
238
|
end
|
215
239
|
|
216
|
-
assert_triggered(/^-42\n\+#<Proc:0xXXXXXX@PATH>\n/) do
|
240
|
+
assert_triggered(/^-42\n\+#<Proc:0xXXXXXX[ @]PATH>\n/) do
|
217
241
|
_(proc { 42 }).must_equal 42 # proc isn't called, so expectation fails
|
218
242
|
end
|
219
243
|
end
|
@@ -222,7 +246,7 @@ describe Minitest::Spec do
|
|
222
246
|
@assertion_count += 1 # extra test
|
223
247
|
|
224
248
|
out, err = capture_io do
|
225
|
-
_(
|
249
|
+
assert_success _(nil).must_equal(nil)
|
226
250
|
end
|
227
251
|
|
228
252
|
exp = "DEPRECATED: Use assert_nil if expecting nil from #{__FILE__}:#{__LINE__-3}. " \
|
@@ -236,13 +260,13 @@ describe Minitest::Spec do
|
|
236
260
|
it "needs to verify floats outside a delta" do
|
237
261
|
@assertion_count += 1 # extra test
|
238
262
|
|
239
|
-
_(
|
263
|
+
assert_success _(24).wont_be_close_to(42)
|
240
264
|
|
241
265
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= 0.001." do
|
242
266
|
_(6 * 7.0).wont_be_close_to 42
|
243
267
|
end
|
244
268
|
|
245
|
-
x =
|
269
|
+
x = "1.0e-05"
|
246
270
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
247
271
|
_(6 * 7.0).wont_be_close_to 42, 0.00001
|
248
272
|
end
|
@@ -255,14 +279,14 @@ describe Minitest::Spec do
|
|
255
279
|
it "needs to verify floats outside an epsilon" do
|
256
280
|
@assertion_count += 1 # extra test
|
257
281
|
|
258
|
-
_(
|
282
|
+
assert_success _(24).wont_be_within_epsilon(42)
|
259
283
|
|
260
|
-
x =
|
284
|
+
x = "0.042"
|
261
285
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
262
286
|
_(6 * 7.0).wont_be_within_epsilon 42
|
263
287
|
end
|
264
288
|
|
265
|
-
x =
|
289
|
+
x = "0.00042"
|
266
290
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
267
291
|
_(6 * 7.0).wont_be_within_epsilon 42, 0.00001
|
268
292
|
end
|
@@ -275,13 +299,13 @@ describe Minitest::Spec do
|
|
275
299
|
it "needs to verify floats within a delta" do
|
276
300
|
@assertion_count += 1 # extra test
|
277
301
|
|
278
|
-
_(
|
302
|
+
assert_success _(6.0 * 7).must_be_close_to(42.0)
|
279
303
|
|
280
304
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.001." do
|
281
305
|
_(1.0 / 100).must_be_close_to 0.0
|
282
306
|
end
|
283
307
|
|
284
|
-
x =
|
308
|
+
x = "1.0e-06"
|
285
309
|
assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
|
286
310
|
_(1.0 / 1000).must_be_close_to 0.0, 0.000001
|
287
311
|
end
|
@@ -294,7 +318,7 @@ describe Minitest::Spec do
|
|
294
318
|
it "needs to verify floats within an epsilon" do
|
295
319
|
@assertion_count += 1 # extra test
|
296
320
|
|
297
|
-
_(
|
321
|
+
assert_success _(6.0 * 7).must_be_within_epsilon(42.0)
|
298
322
|
|
299
323
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.0." do
|
300
324
|
_(1.0 / 100).must_be_within_epsilon 0.0
|
@@ -310,7 +334,7 @@ describe Minitest::Spec do
|
|
310
334
|
end
|
311
335
|
|
312
336
|
it "needs to verify identity" do
|
313
|
-
_(
|
337
|
+
assert_success _(1).must_be_same_as(1)
|
314
338
|
|
315
339
|
assert_triggered "Expected 1 (oid=N) to be the same as 2 (oid=N)." do
|
316
340
|
_(1).must_be_same_as 2
|
@@ -323,8 +347,8 @@ describe Minitest::Spec do
|
|
323
347
|
|
324
348
|
it "needs to verify inequality" do
|
325
349
|
@assertion_count += 2
|
326
|
-
_(
|
327
|
-
_(
|
350
|
+
assert_success _(42).wont_equal(6 * 9)
|
351
|
+
assert_success _(proc {}).wont_equal(42)
|
328
352
|
|
329
353
|
assert_triggered "Expected 1 to not be equal to 1." do
|
330
354
|
_(1).wont_equal 1
|
@@ -336,7 +360,7 @@ describe Minitest::Spec do
|
|
336
360
|
end
|
337
361
|
|
338
362
|
it "needs to verify instances of a class" do
|
339
|
-
_(
|
363
|
+
assert_success _(42).wont_be_instance_of(String)
|
340
364
|
|
341
365
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
342
366
|
_(42).wont_be_kind_of Int
|
@@ -350,8 +374,8 @@ describe Minitest::Spec do
|
|
350
374
|
it "needs to verify kinds of a class" do
|
351
375
|
@assertion_count += 2
|
352
376
|
|
353
|
-
_(
|
354
|
-
_(
|
377
|
+
assert_success _(42).wont_be_kind_of(String)
|
378
|
+
assert_success _(proc {}).wont_be_kind_of(String)
|
355
379
|
|
356
380
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
357
381
|
_(42).wont_be_kind_of Int
|
@@ -365,8 +389,8 @@ describe Minitest::Spec do
|
|
365
389
|
it "needs to verify kinds of objects" do
|
366
390
|
@assertion_count += 3 # extra test
|
367
391
|
|
368
|
-
_(
|
369
|
-
_(
|
392
|
+
assert_success _(6 * 7).must_be_kind_of(Int)
|
393
|
+
assert_success _(6 * 7).must_be_kind_of(Numeric)
|
370
394
|
|
371
395
|
assert_triggered "Expected 42 to be a kind of String, not #{Int.name}." do
|
372
396
|
_(6 * 7).must_be_kind_of String
|
@@ -385,7 +409,7 @@ describe Minitest::Spec do
|
|
385
409
|
it "needs to verify mismatch" do
|
386
410
|
@assertion_count += 3 # match is 2
|
387
411
|
|
388
|
-
_(
|
412
|
+
assert_success _("blah").wont_match(/\d+/)
|
389
413
|
|
390
414
|
assert_triggered "Expected /\\w+/ to not match \"blah\"." do
|
391
415
|
_("blah").wont_match(/\w+/)
|
@@ -397,7 +421,7 @@ describe Minitest::Spec do
|
|
397
421
|
end
|
398
422
|
|
399
423
|
it "needs to verify nil" do
|
400
|
-
_(
|
424
|
+
assert_success _(nil).must_be_nil
|
401
425
|
|
402
426
|
assert_triggered "Expected 42 to be nil." do
|
403
427
|
_(42).must_be_nil
|
@@ -411,7 +435,7 @@ describe Minitest::Spec do
|
|
411
435
|
it "needs to verify non-emptyness" do
|
412
436
|
@assertion_count += 3 # empty is 2 assertions
|
413
437
|
|
414
|
-
_(
|
438
|
+
assert_success _(["some item"]).wont_be_empty
|
415
439
|
|
416
440
|
assert_triggered "Expected [] to not be empty." do
|
417
441
|
_([]).wont_be_empty
|
@@ -423,7 +447,7 @@ describe Minitest::Spec do
|
|
423
447
|
end
|
424
448
|
|
425
449
|
it "needs to verify non-identity" do
|
426
|
-
_(
|
450
|
+
assert_success _(1).wont_be_same_as(2)
|
427
451
|
|
428
452
|
assert_triggered "Expected 1 (oid=N) to not be the same as 1 (oid=N)." do
|
429
453
|
_(1).wont_be_same_as 1
|
@@ -435,7 +459,7 @@ describe Minitest::Spec do
|
|
435
459
|
end
|
436
460
|
|
437
461
|
it "needs to verify non-nil" do
|
438
|
-
_(
|
462
|
+
assert_success _(42).wont_be_nil
|
439
463
|
|
440
464
|
assert_triggered "Expected nil to not be nil." do
|
441
465
|
_(nil).wont_be_nil
|
@@ -447,7 +471,7 @@ describe Minitest::Spec do
|
|
447
471
|
end
|
448
472
|
|
449
473
|
it "needs to verify objects not responding to a message" do
|
450
|
-
_(
|
474
|
+
assert_success _("").wont_respond_to(:woot!)
|
451
475
|
|
452
476
|
assert_triggered "Expected \"\" to not respond to to_s." do
|
453
477
|
_("").wont_respond_to :to_s
|
@@ -461,7 +485,7 @@ describe Minitest::Spec do
|
|
461
485
|
it "needs to verify output in stderr" do
|
462
486
|
@assertion_count -= 1 # no msg
|
463
487
|
|
464
|
-
|
488
|
+
assert_success expect { $stderr.print "blah" }.must_output(nil, "blah")
|
465
489
|
|
466
490
|
assert_triggered "In stderr.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
467
491
|
expect { $stderr.print "xxx" }.must_output(nil, "blah")
|
@@ -471,7 +495,7 @@ describe Minitest::Spec do
|
|
471
495
|
it "needs to verify output in stdout" do
|
472
496
|
@assertion_count -= 1 # no msg
|
473
497
|
|
474
|
-
|
498
|
+
assert_success expect { print "blah" }.must_output("blah")
|
475
499
|
|
476
500
|
assert_triggered "In stdout.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
477
501
|
expect { print "xxx" }.must_output("blah")
|
@@ -481,7 +505,7 @@ describe Minitest::Spec do
|
|
481
505
|
it "needs to verify regexp matches" do
|
482
506
|
@assertion_count += 3 # must_match is 2 assertions
|
483
507
|
|
484
|
-
_(
|
508
|
+
assert_success _("blah").must_match(/\w+/)
|
485
509
|
|
486
510
|
assert_triggered "Expected /\\d+/ to match \"blah\"." do
|
487
511
|
_("blah").must_match(/\d+/)
|
@@ -547,12 +571,28 @@ describe Minitest::Spec do
|
|
547
571
|
(1 + 1).must_equal 2
|
548
572
|
end
|
549
573
|
end
|
574
|
+
|
575
|
+
# https://github.com/seattlerb/minitest/issues/837
|
576
|
+
# https://github.com/rails/rails/pull/39304
|
577
|
+
it "deprecates expectation used without _ with empty backtrace_filter" do
|
578
|
+
skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
|
579
|
+
|
580
|
+
@assertion_count += 3
|
581
|
+
|
582
|
+
exp = /DEPRECATED: global use of must_equal from/
|
583
|
+
|
584
|
+
with_empty_backtrace_filter do
|
585
|
+
assert_output "", exp do
|
586
|
+
(1 + 1).must_equal 2
|
587
|
+
end
|
588
|
+
end
|
589
|
+
end
|
550
590
|
end
|
551
591
|
|
552
592
|
it "needs to verify throw" do
|
553
593
|
@assertion_count += 2 # 2 extra tests
|
554
594
|
|
555
|
-
|
595
|
+
assert_success expect { throw :blah }.must_throw(:blah)
|
556
596
|
|
557
597
|
assert_triggered "Expected :blah to have been thrown." do
|
558
598
|
expect {}.must_throw :blah
|
@@ -572,7 +612,7 @@ describe Minitest::Spec do
|
|
572
612
|
end
|
573
613
|
|
574
614
|
it "needs to verify types of objects" do
|
575
|
-
_(
|
615
|
+
assert_success _(6 * 7).must_be_instance_of(Int)
|
576
616
|
|
577
617
|
exp = "Expected 42 to be an instance of String, not #{Int.name}."
|
578
618
|
|
@@ -588,7 +628,7 @@ describe Minitest::Spec do
|
|
588
628
|
it "needs to verify using any (negative) predicate" do
|
589
629
|
@assertion_count -= 1 # doesn"t take a message
|
590
630
|
|
591
|
-
_(
|
631
|
+
assert_success _("blah").wont_be(:empty?)
|
592
632
|
|
593
633
|
assert_triggered "Expected \"\" to not be empty?." do
|
594
634
|
_("").wont_be :empty?
|
@@ -598,7 +638,7 @@ describe Minitest::Spec do
|
|
598
638
|
it "needs to verify using any binary operator" do
|
599
639
|
@assertion_count -= 1 # no msg
|
600
640
|
|
601
|
-
_(
|
641
|
+
assert_success _(41).must_be(:<, 42)
|
602
642
|
|
603
643
|
assert_triggered "Expected 42 to be < 41." do
|
604
644
|
_(42).must_be(:<, 41)
|
@@ -608,7 +648,7 @@ describe Minitest::Spec do
|
|
608
648
|
it "needs to verify using any predicate" do
|
609
649
|
@assertion_count -= 1 # no msg
|
610
650
|
|
611
|
-
_(
|
651
|
+
assert_success _("").must_be(:empty?)
|
612
652
|
|
613
653
|
assert_triggered "Expected \"blah\" to be empty?." do
|
614
654
|
_("blah").must_be :empty?
|
@@ -616,7 +656,7 @@ describe Minitest::Spec do
|
|
616
656
|
end
|
617
657
|
|
618
658
|
it "needs to verify using respond_to" do
|
619
|
-
_(
|
659
|
+
assert_success _(42).must_respond_to(:+)
|
620
660
|
|
621
661
|
assert_triggered "Expected 42 (#{Int.name}) to respond to #clear." do
|
622
662
|
_(42).must_respond_to :clear
|