minitest 5.13.0 → 5.14.4
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.tar.gz.sig +0 -0
- data/History.rdoc +45 -3
- data/README.rdoc +37 -0
- data/Rakefile +4 -2
- data/lib/minitest.rb +13 -13
- data/lib/minitest/assertions.rb +15 -2
- data/lib/minitest/expectations.rb +36 -35
- data/lib/minitest/mock.rb +5 -1
- data/test/minitest/metametameta.rb +19 -0
- data/test/minitest/test_minitest_assertions.rb +150 -12
- data/test/minitest/test_minitest_mock.rb +12 -0
- data/test/minitest/test_minitest_spec.rb +56 -36
- data/test/minitest/test_minitest_test.rb +7 -3
- metadata +23 -18
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1edfa85bfac65503ab66f88d6ca07571a6e788bfd9eb513399cc60ffeae32e1f
|
4
|
+
data.tar.gz: 68a4cc4fcf8b54f8ba97dbda48e7ee4a8f818c67a3c4021920d5c6e4dfe9866c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f808ea45c7d6755da784bc6d70356f6beb7b794bd4df3cf509ce08d762f125c1bcafd92c406c73ea6a13809d836c75812fed83605f18b1d82e6f16b98e97004
|
7
|
+
data.tar.gz: d75f3b41034e4a70b8f372a79af5971eb2a589f87a4a80bfc20f23ebf1e5ac50235bfa5c300a25bba99f55746a8148cddde804cc9181d941ad62c71626482e06
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,46 @@
|
|
1
|
+
=== 5.14.4 / 2021-02-23
|
2
|
+
|
3
|
+
* 1 bug fix:
|
4
|
+
|
5
|
+
* Fixed deprecation warning using stub with methods using keyword arguments. (Nakilon)
|
6
|
+
|
7
|
+
=== 5.14.3 / 2021-01-05
|
8
|
+
|
9
|
+
* 1 bug fix:
|
10
|
+
|
11
|
+
* Bumped require_ruby_version to < 4 (trunk = 3.1).
|
12
|
+
|
13
|
+
=== 5.14.2 / 2020-08-31
|
14
|
+
|
15
|
+
* 1 bug fix:
|
16
|
+
|
17
|
+
* Bumped ruby version to include 3.0 (trunk).
|
18
|
+
|
19
|
+
=== 5.14.1 / 2020-05-15
|
20
|
+
|
21
|
+
* 3 minor enhancements:
|
22
|
+
|
23
|
+
* Minitest.filter_backtrace returns original backtrace if filter comes back empty.
|
24
|
+
* Minitest::BacktraceFilter now returns entire backtrace if $MT_DEBUG set in env.
|
25
|
+
* Return true on a successful refute. (jusleg)
|
26
|
+
|
27
|
+
* 1 bug fix:
|
28
|
+
|
29
|
+
* Fixed expectation doco to not use global expectations.
|
30
|
+
|
31
|
+
=== 5.14.0 / 2020-01-11
|
32
|
+
|
33
|
+
* 2 minor enhancements:
|
34
|
+
|
35
|
+
* Block-assertions (eg assert_output) now error if raised inside the block. (casperisfine)
|
36
|
+
* Changed assert_raises to only catch Assertion since that covers Skip and friends.
|
37
|
+
|
38
|
+
* 3 bug fixes:
|
39
|
+
|
40
|
+
* Added example for value wrapper with block to Expectations module. (stomar)
|
41
|
+
* Fixed use of must/wont_be_within_delta on Expectation instance. (stomar)
|
42
|
+
* Renamed UnexpectedError#exception to #error to avoid problems with reraising. (casperisfine)
|
43
|
+
|
1
44
|
=== 5.13.0 / 2019-10-29
|
2
45
|
|
3
46
|
* 9 minor enhancements:
|
@@ -180,7 +223,7 @@
|
|
180
223
|
* 2 bug fixes:
|
181
224
|
|
182
225
|
* Re-release to refresh gem certificate signing. ugh.
|
183
|
-
* Fixed hoe/minitest to not augment load path if we're actually testing minitest.
|
226
|
+
* Fixed hoe/minitest to not augment load path if we're actually testing minitest.
|
184
227
|
|
185
228
|
=== 5.9.0 / 2016-05-16
|
186
229
|
|
@@ -204,7 +247,7 @@
|
|
204
247
|
* 2 bug fixes:
|
205
248
|
|
206
249
|
* Re-release to refresh gem certificate signing. ugh.
|
207
|
-
* Fixed hoe/minitest to not augment load path if we're actually testing minitest.
|
250
|
+
* Fixed hoe/minitest to not augment load path if we're actually testing minitest.
|
208
251
|
|
209
252
|
=== 5.8.4 / 2016-01-21
|
210
253
|
|
@@ -1364,4 +1407,3 @@ back.
|
|
1364
1407
|
* 1 major enhancement
|
1365
1408
|
|
1366
1409
|
* Birthday!
|
1367
|
-
|
data/README.rdoc
CHANGED
@@ -376,6 +376,42 @@ Using our example above, here is how we might implement MyCI:
|
|
376
376
|
|
377
377
|
== FAQ
|
378
378
|
|
379
|
+
=== What versions are compatible with what? Or what versions are supported?
|
380
|
+
|
381
|
+
Minitest is a dependency of rails, which until fairly recently had an
|
382
|
+
overzealous backwards compatibility policy. As such, I'm stuck
|
383
|
+
supporting versions of ruby that are long past EOL. Once rails 5.2 is
|
384
|
+
dropped (hopefully April 2021), I get to drop a bunch of versions of
|
385
|
+
ruby that I have to currently test against.
|
386
|
+
|
387
|
+
(As of 2021-01-31)
|
388
|
+
|
389
|
+
Current versions of rails: (https://endoflife.date/rails)
|
390
|
+
|
391
|
+
| rails | min ruby | rec ruby | minitest | status |
|
392
|
+
|-------+----------+----------+----------+----------|
|
393
|
+
| 7.0 | >= 2.7 | 3.0 | >= 5.1 | Future |
|
394
|
+
| 6.1 | >= 2.5 | 3.0 | >= 5.1 | Current |
|
395
|
+
| 6.0 | >= 2.5 | 2.6 | >= 5.1 | Security |
|
396
|
+
| 5.2 | >= 2.2.2 | 2.5 | ~> 5.1 | Security | EOL @railsconf 2021?
|
397
|
+
|
398
|
+
Current versions of ruby: (https://endoflife.date/ruby)
|
399
|
+
|
400
|
+
| ruby | Status | EOL Date |
|
401
|
+
|------+---------+------------|
|
402
|
+
| 3.0 | Current | 2024-03-31 |
|
403
|
+
| 2.7 | Maint | 2023-03-31 |
|
404
|
+
| 2.6 | Maint | 2022-03-31 |
|
405
|
+
| 2.5 | Maint* | 2021-03-31 |
|
406
|
+
| 2.4 | EOL | 2020-03-31 |
|
407
|
+
| 2.3 | EOL | 2019-03-31 |
|
408
|
+
| 2.2 | EOL | 2018-03-31 |
|
409
|
+
|
410
|
+
See also:
|
411
|
+
|
412
|
+
* https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html
|
413
|
+
* https://jamesjeffersconsulting.com/ruby-rails-version-matrix/
|
414
|
+
|
379
415
|
=== How to test SimpleDelegates?
|
380
416
|
|
381
417
|
The following implementation and test:
|
@@ -677,6 +713,7 @@ minitest-unordered :: Adds a new assertion to minitest for checking the
|
|
677
713
|
contents of a collection, ignoring element order.
|
678
714
|
minitest-vcr :: Automatic cassette managment with Minitest::Spec
|
679
715
|
and VCR.
|
716
|
+
minitest_log :: Adds structured logging, data explication, and verdicts.
|
680
717
|
minitest_owrapper :: Get tests results as a TestResult object.
|
681
718
|
minitest_should :: Shoulda style syntax for minitest test::unit.
|
682
719
|
minitest_tu_shim :: Bridges between test/unit and minitest.
|
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ Hoe.spec "minitest" do
|
|
11
11
|
|
12
12
|
license "MIT"
|
13
13
|
|
14
|
-
require_ruby_version "
|
14
|
+
require_ruby_version [">= 2.2", "< 4.0"]
|
15
15
|
end
|
16
16
|
|
17
17
|
desc "Find missing expectations"
|
@@ -21,7 +21,7 @@ task :specs do
|
|
21
21
|
require "minitest/spec"
|
22
22
|
|
23
23
|
pos_prefix, neg_prefix = "must", "wont"
|
24
|
-
skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|raise$)/x
|
24
|
+
skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|send|raise$)/x
|
25
25
|
dont_flip_re = /(must|wont)_(include|respond_to)/
|
26
26
|
|
27
27
|
map = {
|
@@ -32,6 +32,8 @@ task :specs do
|
|
32
32
|
/_includes/ => "_include",
|
33
33
|
/(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
|
34
34
|
/must_raises/ => "must_raise",
|
35
|
+
/(must|wont)_predicate/ => '\1_be',
|
36
|
+
/(must|wont)_path_exists/ => 'path_\1_exist',
|
35
37
|
}
|
36
38
|
|
37
39
|
expectations = Minitest::Expectations.public_instance_methods.map(&:to_s)
|
data/lib/minitest.rb
CHANGED
@@ -8,7 +8,7 @@ require "stringio"
|
|
8
8
|
# :include: README.rdoc
|
9
9
|
|
10
10
|
module Minitest
|
11
|
-
VERSION = "5.
|
11
|
+
VERSION = "5.14.4" # :nodoc:
|
12
12
|
ENCS = "".respond_to? :encoding # :nodoc:
|
13
13
|
|
14
14
|
@@installed_at_exit ||= false
|
@@ -238,7 +238,9 @@ module Minitest
|
|
238
238
|
end
|
239
239
|
|
240
240
|
def self.filter_backtrace bt # :nodoc:
|
241
|
-
backtrace_filter.filter bt
|
241
|
+
result = backtrace_filter.filter bt
|
242
|
+
result = bt.dup if result.empty?
|
243
|
+
result
|
242
244
|
end
|
243
245
|
|
244
246
|
##
|
@@ -907,24 +909,21 @@ module Minitest
|
|
907
909
|
# Assertion wrapping an unexpected error that was raised during a run.
|
908
910
|
|
909
911
|
class UnexpectedError < Assertion
|
910
|
-
|
912
|
+
# TODO: figure out how to use `cause` instead
|
913
|
+
attr_accessor :error # :nodoc:
|
911
914
|
|
912
|
-
def initialize
|
915
|
+
def initialize error # :nodoc:
|
913
916
|
super "Unexpected exception"
|
914
|
-
self.
|
917
|
+
self.error = error
|
915
918
|
end
|
916
919
|
|
917
920
|
def backtrace # :nodoc:
|
918
|
-
self.
|
919
|
-
end
|
920
|
-
|
921
|
-
def error # :nodoc:
|
922
|
-
self.exception
|
921
|
+
self.error.backtrace
|
923
922
|
end
|
924
923
|
|
925
924
|
def message # :nodoc:
|
926
925
|
bt = Minitest.filter_backtrace(self.backtrace).join "\n "
|
927
|
-
"#{self.
|
926
|
+
"#{self.error.class}: #{self.error.message}\n #{bt}"
|
928
927
|
end
|
929
928
|
|
930
929
|
def result_label # :nodoc:
|
@@ -1008,12 +1007,13 @@ module Minitest
|
|
1008
1007
|
MT_RE = %r%lib/minitest% #:nodoc:
|
1009
1008
|
|
1010
1009
|
##
|
1011
|
-
# Filter +bt+ to something useful. Returns the whole thing if
|
1010
|
+
# Filter +bt+ to something useful. Returns the whole thing if
|
1011
|
+
# $DEBUG (ruby) or $MT_DEBUG (env).
|
1012
1012
|
|
1013
1013
|
def filter bt
|
1014
1014
|
return ["No backtrace"] unless bt
|
1015
1015
|
|
1016
|
-
return bt.dup if $DEBUG
|
1016
|
+
return bt.dup if $DEBUG || ENV["MT_DEBUG"]
|
1017
1017
|
|
1018
1018
|
new_bt = bt.take_while { |line| line !~ MT_RE }
|
1019
1019
|
new_bt = bt.select { |line| line !~ MT_RE } if new_bt.empty?
|
data/lib/minitest/assertions.rb
CHANGED
@@ -341,6 +341,10 @@ module Minitest
|
|
341
341
|
x = send out_msg, stdout, out, "In stdout" if out_msg
|
342
342
|
|
343
343
|
(!stdout || x) && (!stderr || y)
|
344
|
+
rescue Assertion
|
345
|
+
raise
|
346
|
+
rescue => e
|
347
|
+
raise UnexpectedError, e
|
344
348
|
end
|
345
349
|
|
346
350
|
##
|
@@ -399,7 +403,7 @@ module Minitest
|
|
399
403
|
rescue *exp => e
|
400
404
|
pass # count assertion
|
401
405
|
return e
|
402
|
-
rescue Minitest::Skip
|
406
|
+
rescue Minitest::Assertion # incl Skip & UnexpectedError
|
403
407
|
# don't count assertion
|
404
408
|
raise
|
405
409
|
rescue SignalException, SystemExit
|
@@ -485,6 +489,10 @@ module Minitest
|
|
485
489
|
end
|
486
490
|
|
487
491
|
assert caught, message(msg) { default }
|
492
|
+
rescue Assertion
|
493
|
+
raise
|
494
|
+
rescue => e
|
495
|
+
raise UnexpectedError, e
|
488
496
|
end
|
489
497
|
|
490
498
|
##
|
@@ -557,6 +565,11 @@ module Minitest
|
|
557
565
|
captured_stderr.unlink
|
558
566
|
$stdout.reopen orig_stdout
|
559
567
|
$stderr.reopen orig_stderr
|
568
|
+
|
569
|
+
orig_stdout.close
|
570
|
+
orig_stderr.close
|
571
|
+
captured_stdout.close
|
572
|
+
captured_stderr.close
|
560
573
|
end
|
561
574
|
end
|
562
575
|
end
|
@@ -615,7 +628,7 @@ module Minitest
|
|
615
628
|
|
616
629
|
def refute test, msg = nil
|
617
630
|
msg ||= message { "Expected #{mu_pp(test)} to not be truthy" }
|
618
|
-
|
631
|
+
assert !test, msg
|
619
632
|
end
|
620
633
|
|
621
634
|
##
|
@@ -9,10 +9,11 @@
|
|
9
9
|
#
|
10
10
|
# it "should still work in threads" do
|
11
11
|
# my_threaded_thingy do
|
12
|
-
# (1+1).must_equal 2
|
13
|
-
# assert_equal 2, 1+1
|
14
|
-
# _(1 + 1).must_equal 2
|
15
|
-
# value(1 + 1).must_equal 2
|
12
|
+
# (1+1).must_equal 2 # bad
|
13
|
+
# assert_equal 2, 1+1 # good
|
14
|
+
# _(1 + 1).must_equal 2 # good
|
15
|
+
# value(1 + 1).must_equal 2 # good, also #expect
|
16
|
+
# _ { 1 + "1" }.must_raise TypeError # good
|
16
17
|
# end
|
17
18
|
# end
|
18
19
|
|
@@ -21,7 +22,7 @@ module Minitest::Expectations
|
|
21
22
|
##
|
22
23
|
# See Minitest::Assertions#assert_empty.
|
23
24
|
#
|
24
|
-
# collection.must_be_empty
|
25
|
+
# _(collection).must_be_empty
|
25
26
|
#
|
26
27
|
# :method: must_be_empty
|
27
28
|
|
@@ -30,7 +31,7 @@ module Minitest::Expectations
|
|
30
31
|
##
|
31
32
|
# See Minitest::Assertions#assert_equal
|
32
33
|
#
|
33
|
-
# a.must_equal b
|
34
|
+
# _(a).must_equal b
|
34
35
|
#
|
35
36
|
# :method: must_equal
|
36
37
|
|
@@ -39,18 +40,18 @@ module Minitest::Expectations
|
|
39
40
|
##
|
40
41
|
# See Minitest::Assertions#assert_in_delta
|
41
42
|
#
|
42
|
-
# n.must_be_close_to m [, delta]
|
43
|
+
# _(n).must_be_close_to m [, delta]
|
43
44
|
#
|
44
45
|
# :method: must_be_close_to
|
45
46
|
|
46
47
|
infect_an_assertion :assert_in_delta, :must_be_close_to
|
47
48
|
|
48
|
-
|
49
|
+
infect_an_assertion :assert_in_delta, :must_be_within_delta # :nodoc:
|
49
50
|
|
50
51
|
##
|
51
52
|
# See Minitest::Assertions#assert_in_epsilon
|
52
53
|
#
|
53
|
-
# n.must_be_within_epsilon m [, epsilon]
|
54
|
+
# _(n).must_be_within_epsilon m [, epsilon]
|
54
55
|
#
|
55
56
|
# :method: must_be_within_epsilon
|
56
57
|
|
@@ -59,7 +60,7 @@ module Minitest::Expectations
|
|
59
60
|
##
|
60
61
|
# See Minitest::Assertions#assert_includes
|
61
62
|
#
|
62
|
-
# collection.must_include obj
|
63
|
+
# _(collection).must_include obj
|
63
64
|
#
|
64
65
|
# :method: must_include
|
65
66
|
|
@@ -68,7 +69,7 @@ module Minitest::Expectations
|
|
68
69
|
##
|
69
70
|
# See Minitest::Assertions#assert_instance_of
|
70
71
|
#
|
71
|
-
# obj.must_be_instance_of klass
|
72
|
+
# _(obj).must_be_instance_of klass
|
72
73
|
#
|
73
74
|
# :method: must_be_instance_of
|
74
75
|
|
@@ -77,7 +78,7 @@ module Minitest::Expectations
|
|
77
78
|
##
|
78
79
|
# See Minitest::Assertions#assert_kind_of
|
79
80
|
#
|
80
|
-
# obj.must_be_kind_of mod
|
81
|
+
# _(obj).must_be_kind_of mod
|
81
82
|
#
|
82
83
|
# :method: must_be_kind_of
|
83
84
|
|
@@ -86,7 +87,7 @@ module Minitest::Expectations
|
|
86
87
|
##
|
87
88
|
# See Minitest::Assertions#assert_match
|
88
89
|
#
|
89
|
-
# a.must_match b
|
90
|
+
# _(a).must_match b
|
90
91
|
#
|
91
92
|
# :method: must_match
|
92
93
|
|
@@ -95,7 +96,7 @@ module Minitest::Expectations
|
|
95
96
|
##
|
96
97
|
# See Minitest::Assertions#assert_nil
|
97
98
|
#
|
98
|
-
# obj.must_be_nil
|
99
|
+
# _(obj).must_be_nil
|
99
100
|
#
|
100
101
|
# :method: must_be_nil
|
101
102
|
|
@@ -104,11 +105,11 @@ module Minitest::Expectations
|
|
104
105
|
##
|
105
106
|
# See Minitest::Assertions#assert_operator
|
106
107
|
#
|
107
|
-
# n.must_be :<=, 42
|
108
|
+
# _(n).must_be :<=, 42
|
108
109
|
#
|
109
110
|
# This can also do predicates:
|
110
111
|
#
|
111
|
-
# str.must_be :empty?
|
112
|
+
# _(str).must_be :empty?
|
112
113
|
#
|
113
114
|
# :method: must_be
|
114
115
|
|
@@ -117,7 +118,7 @@ module Minitest::Expectations
|
|
117
118
|
##
|
118
119
|
# See Minitest::Assertions#assert_output
|
119
120
|
#
|
120
|
-
#
|
121
|
+
# _ { ... }.must_output out_or_nil [, err]
|
121
122
|
#
|
122
123
|
# :method: must_output
|
123
124
|
|
@@ -126,7 +127,7 @@ module Minitest::Expectations
|
|
126
127
|
##
|
127
128
|
# See Minitest::Assertions#assert_raises
|
128
129
|
#
|
129
|
-
#
|
130
|
+
# _ { ... }.must_raise exception
|
130
131
|
#
|
131
132
|
# :method: must_raise
|
132
133
|
|
@@ -135,7 +136,7 @@ module Minitest::Expectations
|
|
135
136
|
##
|
136
137
|
# See Minitest::Assertions#assert_respond_to
|
137
138
|
#
|
138
|
-
# obj.must_respond_to msg
|
139
|
+
# _(obj).must_respond_to msg
|
139
140
|
#
|
140
141
|
# :method: must_respond_to
|
141
142
|
|
@@ -144,7 +145,7 @@ module Minitest::Expectations
|
|
144
145
|
##
|
145
146
|
# See Minitest::Assertions#assert_same
|
146
147
|
#
|
147
|
-
# a.must_be_same_as b
|
148
|
+
# _(a).must_be_same_as b
|
148
149
|
#
|
149
150
|
# :method: must_be_same_as
|
150
151
|
|
@@ -153,7 +154,7 @@ module Minitest::Expectations
|
|
153
154
|
##
|
154
155
|
# See Minitest::Assertions#assert_silent
|
155
156
|
#
|
156
|
-
#
|
157
|
+
# _ { ... }.must_be_silent
|
157
158
|
#
|
158
159
|
# :method: must_be_silent
|
159
160
|
|
@@ -162,7 +163,7 @@ module Minitest::Expectations
|
|
162
163
|
##
|
163
164
|
# See Minitest::Assertions#assert_throws
|
164
165
|
#
|
165
|
-
#
|
166
|
+
# _ { ... }.must_throw sym
|
166
167
|
#
|
167
168
|
# :method: must_throw
|
168
169
|
|
@@ -189,7 +190,7 @@ module Minitest::Expectations
|
|
189
190
|
##
|
190
191
|
# See Minitest::Assertions#refute_empty
|
191
192
|
#
|
192
|
-
# collection.wont_be_empty
|
193
|
+
# _(collection).wont_be_empty
|
193
194
|
#
|
194
195
|
# :method: wont_be_empty
|
195
196
|
|
@@ -198,7 +199,7 @@ module Minitest::Expectations
|
|
198
199
|
##
|
199
200
|
# See Minitest::Assertions#refute_equal
|
200
201
|
#
|
201
|
-
# a.wont_equal b
|
202
|
+
# _(a).wont_equal b
|
202
203
|
#
|
203
204
|
# :method: wont_equal
|
204
205
|
|
@@ -207,18 +208,18 @@ module Minitest::Expectations
|
|
207
208
|
##
|
208
209
|
# See Minitest::Assertions#refute_in_delta
|
209
210
|
#
|
210
|
-
# n.wont_be_close_to m [, delta]
|
211
|
+
# _(n).wont_be_close_to m [, delta]
|
211
212
|
#
|
212
213
|
# :method: wont_be_close_to
|
213
214
|
|
214
215
|
infect_an_assertion :refute_in_delta, :wont_be_close_to
|
215
216
|
|
216
|
-
|
217
|
+
infect_an_assertion :refute_in_delta, :wont_be_within_delta # :nodoc:
|
217
218
|
|
218
219
|
##
|
219
220
|
# See Minitest::Assertions#refute_in_epsilon
|
220
221
|
#
|
221
|
-
# n.wont_be_within_epsilon m [, epsilon]
|
222
|
+
# _(n).wont_be_within_epsilon m [, epsilon]
|
222
223
|
#
|
223
224
|
# :method: wont_be_within_epsilon
|
224
225
|
|
@@ -227,7 +228,7 @@ module Minitest::Expectations
|
|
227
228
|
##
|
228
229
|
# See Minitest::Assertions#refute_includes
|
229
230
|
#
|
230
|
-
# collection.wont_include obj
|
231
|
+
# _(collection).wont_include obj
|
231
232
|
#
|
232
233
|
# :method: wont_include
|
233
234
|
|
@@ -236,7 +237,7 @@ module Minitest::Expectations
|
|
236
237
|
##
|
237
238
|
# See Minitest::Assertions#refute_instance_of
|
238
239
|
#
|
239
|
-
# obj.wont_be_instance_of klass
|
240
|
+
# _(obj).wont_be_instance_of klass
|
240
241
|
#
|
241
242
|
# :method: wont_be_instance_of
|
242
243
|
|
@@ -245,7 +246,7 @@ module Minitest::Expectations
|
|
245
246
|
##
|
246
247
|
# See Minitest::Assertions#refute_kind_of
|
247
248
|
#
|
248
|
-
# obj.wont_be_kind_of mod
|
249
|
+
# _(obj).wont_be_kind_of mod
|
249
250
|
#
|
250
251
|
# :method: wont_be_kind_of
|
251
252
|
|
@@ -254,7 +255,7 @@ module Minitest::Expectations
|
|
254
255
|
##
|
255
256
|
# See Minitest::Assertions#refute_match
|
256
257
|
#
|
257
|
-
# a.wont_match b
|
258
|
+
# _(a).wont_match b
|
258
259
|
#
|
259
260
|
# :method: wont_match
|
260
261
|
|
@@ -263,7 +264,7 @@ module Minitest::Expectations
|
|
263
264
|
##
|
264
265
|
# See Minitest::Assertions#refute_nil
|
265
266
|
#
|
266
|
-
# obj.wont_be_nil
|
267
|
+
# _(obj).wont_be_nil
|
267
268
|
#
|
268
269
|
# :method: wont_be_nil
|
269
270
|
|
@@ -272,7 +273,7 @@ module Minitest::Expectations
|
|
272
273
|
##
|
273
274
|
# See Minitest::Assertions#refute_operator
|
274
275
|
#
|
275
|
-
# n.wont_be :<=, 42
|
276
|
+
# _(n).wont_be :<=, 42
|
276
277
|
#
|
277
278
|
# This can also do predicates:
|
278
279
|
#
|
@@ -285,7 +286,7 @@ module Minitest::Expectations
|
|
285
286
|
##
|
286
287
|
# See Minitest::Assertions#refute_respond_to
|
287
288
|
#
|
288
|
-
# obj.wont_respond_to msg
|
289
|
+
# _(obj).wont_respond_to msg
|
289
290
|
#
|
290
291
|
# :method: wont_respond_to
|
291
292
|
|
@@ -294,7 +295,7 @@ module Minitest::Expectations
|
|
294
295
|
##
|
295
296
|
# See Minitest::Assertions#refute_same
|
296
297
|
#
|
297
|
-
# a.wont_be_same_as b
|
298
|
+
# _(a).wont_be_same_as b
|
298
299
|
#
|
299
300
|
# :method: wont_be_same_as
|
300
301
|
|
data/lib/minitest/mock.rb
CHANGED
@@ -207,7 +207,9 @@ class Object
|
|
207
207
|
# assert obj_under_test.stale?
|
208
208
|
# end
|
209
209
|
# end
|
210
|
-
|
210
|
+
#--
|
211
|
+
# NOTE: keyword args in callables are NOT checked for correctness
|
212
|
+
# against the existing method. Too many edge cases to be worth it.
|
211
213
|
|
212
214
|
def stub name, val_or_callable, *block_args
|
213
215
|
new_name = "__minitest_stub__#{name}"
|
@@ -231,6 +233,8 @@ class Object
|
|
231
233
|
end
|
232
234
|
end
|
233
235
|
|
236
|
+
metaclass.send(:ruby2_keywords, name) if metaclass.respond_to?(:ruby2_keywords, true)
|
237
|
+
|
234
238
|
yield self
|
235
239
|
ensure
|
236
240
|
metaclass.send :undef_method, name
|
@@ -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
|
|
@@ -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
|
@@ -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
|
@@ -988,16 +1118,20 @@ class TestMinitestAssertions < Minitest::Test
|
|
988
1118
|
end
|
989
1119
|
end
|
990
1120
|
|
1121
|
+
def assert_fail_after t
|
1122
|
+
@tc.fail_after t.year, t.month, t.day, "remove the deprecations"
|
1123
|
+
end
|
1124
|
+
|
991
1125
|
def test_fail_after
|
992
|
-
|
993
|
-
|
1126
|
+
d0 = Time.now
|
1127
|
+
d1 = d0 + 86_400 # I am an idiot
|
994
1128
|
|
995
1129
|
assert_silent do
|
996
|
-
|
1130
|
+
assert_fail_after d1
|
997
1131
|
end
|
998
1132
|
|
999
1133
|
assert_triggered "remove the deprecations" do
|
1000
|
-
|
1134
|
+
assert_fail_after d0
|
1001
1135
|
end
|
1002
1136
|
end
|
1003
1137
|
|
@@ -1020,7 +1154,7 @@ class TestMinitestAssertions < Minitest::Test
|
|
1020
1154
|
def test_refute
|
1021
1155
|
@assertion_count = 2
|
1022
1156
|
|
1023
|
-
@tc.assert_equal
|
1157
|
+
@tc.assert_equal true, @tc.refute(false), "returns true on success"
|
1024
1158
|
end
|
1025
1159
|
|
1026
1160
|
def test_refute_empty
|
@@ -1212,18 +1346,22 @@ class TestMinitestAssertions < Minitest::Test
|
|
1212
1346
|
end
|
1213
1347
|
end
|
1214
1348
|
|
1349
|
+
def assert_skip_until t, msg
|
1350
|
+
@tc.skip_until t.year, t.month, t.day, msg
|
1351
|
+
end
|
1352
|
+
|
1215
1353
|
def test_skip_until
|
1216
1354
|
@assertion_count = 0
|
1217
1355
|
|
1218
|
-
|
1219
|
-
|
1356
|
+
d0 = Time.now
|
1357
|
+
d1 = d0 + 86_400 # I am an idiot
|
1220
1358
|
|
1221
1359
|
assert_output "", /Stale skip_until \"not yet\" at .*?:\d+$/ do
|
1222
|
-
|
1360
|
+
assert_skip_until d0, "not yet"
|
1223
1361
|
end
|
1224
1362
|
|
1225
1363
|
assert_triggered "not ready yet", Minitest::Skip do
|
1226
|
-
|
1364
|
+
assert_skip_until d1, "not ready yet"
|
1227
1365
|
end
|
1228
1366
|
end
|
1229
1367
|
|
@@ -591,6 +591,18 @@ class TestMinitestStub < Minitest::Test
|
|
591
591
|
end
|
592
592
|
end
|
593
593
|
|
594
|
+
class Keywords
|
595
|
+
def self.args req, kw1:, kw2:24
|
596
|
+
[req, kw1, kw2]
|
597
|
+
end
|
598
|
+
end
|
599
|
+
|
600
|
+
def test_stub_callable_keyword_args
|
601
|
+
Keywords.stub :args, ->(*args, **kws) { [args, kws] } do
|
602
|
+
@tc.assert_equal [["woot"], { kw1: 42 }], Keywords.args("woot", kw1: 42)
|
603
|
+
end
|
604
|
+
end
|
605
|
+
|
594
606
|
def test_stub_callable_block_5 # from tenderlove
|
595
607
|
@assertion_count += 1
|
596
608
|
Foo.stub5 :blocking, Bar.new do
|
@@ -43,6 +43,10 @@ describe Minitest::Spec do
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
def assert_success spec
|
47
|
+
assert_equal true, spec
|
48
|
+
end
|
49
|
+
|
46
50
|
before do
|
47
51
|
@assertion_count = 4
|
48
52
|
end
|
@@ -62,7 +66,7 @@ describe Minitest::Spec do
|
|
62
66
|
it "needs to check for file existence" do
|
63
67
|
@assertion_count = 3
|
64
68
|
|
65
|
-
_(
|
69
|
+
assert_success _(__FILE__).path_must_exist
|
66
70
|
|
67
71
|
assert_triggered "Expected path 'blah' to exist." do
|
68
72
|
_("blah").path_must_exist
|
@@ -72,7 +76,7 @@ describe Minitest::Spec do
|
|
72
76
|
it "needs to check for file non-existence" do
|
73
77
|
@assertion_count = 3
|
74
78
|
|
75
|
-
_(
|
79
|
+
assert_success _("blah").path_wont_exist
|
76
80
|
|
77
81
|
assert_triggered "Expected path '#{__FILE__}' to not exist." do
|
78
82
|
_(__FILE__).path_wont_exist
|
@@ -82,7 +86,7 @@ describe Minitest::Spec do
|
|
82
86
|
it "needs to be sensible about must_include order" do
|
83
87
|
@assertion_count += 3 # must_include is 2 assertions
|
84
88
|
|
85
|
-
_(
|
89
|
+
assert_success _([1, 2, 3]).must_include(2)
|
86
90
|
|
87
91
|
assert_triggered "Expected [1, 2, 3] to include 5." do
|
88
92
|
_([1, 2, 3]).must_include 5
|
@@ -96,7 +100,7 @@ describe Minitest::Spec do
|
|
96
100
|
it "needs to be sensible about wont_include order" do
|
97
101
|
@assertion_count += 3 # wont_include is 2 assertions
|
98
102
|
|
99
|
-
_(
|
103
|
+
assert_success _([1, 2, 3]).wont_include(5)
|
100
104
|
|
101
105
|
assert_triggered "Expected [1, 2, 3] to not include 2." do
|
102
106
|
_([1, 2, 3]).wont_include 2
|
@@ -137,7 +141,7 @@ describe Minitest::Spec do
|
|
137
141
|
@assertion_count -= 1 # no msg
|
138
142
|
@assertion_count += 2 # assert_output is 2 assertions
|
139
143
|
|
140
|
-
|
144
|
+
assert_success expect {}.must_be_silent
|
141
145
|
|
142
146
|
assert_triggered "In stdout.\nExpected: \"\"\n Actual: \"xxx\"" do
|
143
147
|
expect { print "xxx" }.must_be_silent
|
@@ -195,7 +199,7 @@ describe Minitest::Spec do
|
|
195
199
|
end
|
196
200
|
|
197
201
|
it "needs to verify binary messages" do
|
198
|
-
_(
|
202
|
+
assert_success _(42).wont_be(:<, 24)
|
199
203
|
|
200
204
|
assert_triggered "Expected 24 to not be < 42." do
|
201
205
|
_(24).wont_be :<, 42
|
@@ -209,7 +213,7 @@ describe Minitest::Spec do
|
|
209
213
|
it "needs to verify emptyness" do
|
210
214
|
@assertion_count += 3 # empty is 2 assertions
|
211
215
|
|
212
|
-
_(
|
216
|
+
assert_success _([]).must_be_empty
|
213
217
|
|
214
218
|
assert_triggered "Expected [42] to be empty." do
|
215
219
|
_([42]).must_be_empty
|
@@ -223,7 +227,7 @@ describe Minitest::Spec do
|
|
223
227
|
it "needs to verify equality" do
|
224
228
|
@assertion_count += 1
|
225
229
|
|
226
|
-
_(
|
230
|
+
assert_success _(6 * 7).must_equal(42)
|
227
231
|
|
228
232
|
assert_triggered "Expected: 42\n Actual: 54" do
|
229
233
|
_(6 * 9).must_equal 42
|
@@ -242,7 +246,7 @@ describe Minitest::Spec do
|
|
242
246
|
@assertion_count += 1 # extra test
|
243
247
|
|
244
248
|
out, err = capture_io do
|
245
|
-
_(
|
249
|
+
assert_success _(nil).must_equal(nil)
|
246
250
|
end
|
247
251
|
|
248
252
|
exp = "DEPRECATED: Use assert_nil if expecting nil from #{__FILE__}:#{__LINE__-3}. " \
|
@@ -256,7 +260,7 @@ describe Minitest::Spec do
|
|
256
260
|
it "needs to verify floats outside a delta" do
|
257
261
|
@assertion_count += 1 # extra test
|
258
262
|
|
259
|
-
_(
|
263
|
+
assert_success _(24).wont_be_close_to(42)
|
260
264
|
|
261
265
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= 0.001." do
|
262
266
|
_(6 * 7.0).wont_be_close_to 42
|
@@ -275,7 +279,7 @@ describe Minitest::Spec do
|
|
275
279
|
it "needs to verify floats outside an epsilon" do
|
276
280
|
@assertion_count += 1 # extra test
|
277
281
|
|
278
|
-
_(
|
282
|
+
assert_success _(24).wont_be_within_epsilon(42)
|
279
283
|
|
280
284
|
x = "0.042"
|
281
285
|
assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
|
@@ -295,7 +299,7 @@ describe Minitest::Spec do
|
|
295
299
|
it "needs to verify floats within a delta" do
|
296
300
|
@assertion_count += 1 # extra test
|
297
301
|
|
298
|
-
_(
|
302
|
+
assert_success _(6.0 * 7).must_be_close_to(42.0)
|
299
303
|
|
300
304
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.001." do
|
301
305
|
_(1.0 / 100).must_be_close_to 0.0
|
@@ -314,7 +318,7 @@ describe Minitest::Spec do
|
|
314
318
|
it "needs to verify floats within an epsilon" do
|
315
319
|
@assertion_count += 1 # extra test
|
316
320
|
|
317
|
-
_(
|
321
|
+
assert_success _(6.0 * 7).must_be_within_epsilon(42.0)
|
318
322
|
|
319
323
|
assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.0." do
|
320
324
|
_(1.0 / 100).must_be_within_epsilon 0.0
|
@@ -330,7 +334,7 @@ describe Minitest::Spec do
|
|
330
334
|
end
|
331
335
|
|
332
336
|
it "needs to verify identity" do
|
333
|
-
_(
|
337
|
+
assert_success _(1).must_be_same_as(1)
|
334
338
|
|
335
339
|
assert_triggered "Expected 1 (oid=N) to be the same as 2 (oid=N)." do
|
336
340
|
_(1).must_be_same_as 2
|
@@ -343,8 +347,8 @@ describe Minitest::Spec do
|
|
343
347
|
|
344
348
|
it "needs to verify inequality" do
|
345
349
|
@assertion_count += 2
|
346
|
-
_(
|
347
|
-
_(
|
350
|
+
assert_success _(42).wont_equal(6 * 9)
|
351
|
+
assert_success _(proc {}).wont_equal(42)
|
348
352
|
|
349
353
|
assert_triggered "Expected 1 to not be equal to 1." do
|
350
354
|
_(1).wont_equal 1
|
@@ -356,7 +360,7 @@ describe Minitest::Spec do
|
|
356
360
|
end
|
357
361
|
|
358
362
|
it "needs to verify instances of a class" do
|
359
|
-
_(
|
363
|
+
assert_success _(42).wont_be_instance_of(String)
|
360
364
|
|
361
365
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
362
366
|
_(42).wont_be_kind_of Int
|
@@ -370,8 +374,8 @@ describe Minitest::Spec do
|
|
370
374
|
it "needs to verify kinds of a class" do
|
371
375
|
@assertion_count += 2
|
372
376
|
|
373
|
-
_(
|
374
|
-
_(
|
377
|
+
assert_success _(42).wont_be_kind_of(String)
|
378
|
+
assert_success _(proc {}).wont_be_kind_of(String)
|
375
379
|
|
376
380
|
assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
|
377
381
|
_(42).wont_be_kind_of Int
|
@@ -385,8 +389,8 @@ describe Minitest::Spec do
|
|
385
389
|
it "needs to verify kinds of objects" do
|
386
390
|
@assertion_count += 3 # extra test
|
387
391
|
|
388
|
-
_(
|
389
|
-
_(
|
392
|
+
assert_success _(6 * 7).must_be_kind_of(Int)
|
393
|
+
assert_success _(6 * 7).must_be_kind_of(Numeric)
|
390
394
|
|
391
395
|
assert_triggered "Expected 42 to be a kind of String, not #{Int.name}." do
|
392
396
|
_(6 * 7).must_be_kind_of String
|
@@ -405,7 +409,7 @@ describe Minitest::Spec do
|
|
405
409
|
it "needs to verify mismatch" do
|
406
410
|
@assertion_count += 3 # match is 2
|
407
411
|
|
408
|
-
_(
|
412
|
+
assert_success _("blah").wont_match(/\d+/)
|
409
413
|
|
410
414
|
assert_triggered "Expected /\\w+/ to not match \"blah\"." do
|
411
415
|
_("blah").wont_match(/\w+/)
|
@@ -417,7 +421,7 @@ describe Minitest::Spec do
|
|
417
421
|
end
|
418
422
|
|
419
423
|
it "needs to verify nil" do
|
420
|
-
_(
|
424
|
+
assert_success _(nil).must_be_nil
|
421
425
|
|
422
426
|
assert_triggered "Expected 42 to be nil." do
|
423
427
|
_(42).must_be_nil
|
@@ -431,7 +435,7 @@ describe Minitest::Spec do
|
|
431
435
|
it "needs to verify non-emptyness" do
|
432
436
|
@assertion_count += 3 # empty is 2 assertions
|
433
437
|
|
434
|
-
_(
|
438
|
+
assert_success _(["some item"]).wont_be_empty
|
435
439
|
|
436
440
|
assert_triggered "Expected [] to not be empty." do
|
437
441
|
_([]).wont_be_empty
|
@@ -443,7 +447,7 @@ describe Minitest::Spec do
|
|
443
447
|
end
|
444
448
|
|
445
449
|
it "needs to verify non-identity" do
|
446
|
-
_(
|
450
|
+
assert_success _(1).wont_be_same_as(2)
|
447
451
|
|
448
452
|
assert_triggered "Expected 1 (oid=N) to not be the same as 1 (oid=N)." do
|
449
453
|
_(1).wont_be_same_as 1
|
@@ -455,7 +459,7 @@ describe Minitest::Spec do
|
|
455
459
|
end
|
456
460
|
|
457
461
|
it "needs to verify non-nil" do
|
458
|
-
_(
|
462
|
+
assert_success _(42).wont_be_nil
|
459
463
|
|
460
464
|
assert_triggered "Expected nil to not be nil." do
|
461
465
|
_(nil).wont_be_nil
|
@@ -467,7 +471,7 @@ describe Minitest::Spec do
|
|
467
471
|
end
|
468
472
|
|
469
473
|
it "needs to verify objects not responding to a message" do
|
470
|
-
_(
|
474
|
+
assert_success _("").wont_respond_to(:woot!)
|
471
475
|
|
472
476
|
assert_triggered "Expected \"\" to not respond to to_s." do
|
473
477
|
_("").wont_respond_to :to_s
|
@@ -481,7 +485,7 @@ describe Minitest::Spec do
|
|
481
485
|
it "needs to verify output in stderr" do
|
482
486
|
@assertion_count -= 1 # no msg
|
483
487
|
|
484
|
-
|
488
|
+
assert_success expect { $stderr.print "blah" }.must_output(nil, "blah")
|
485
489
|
|
486
490
|
assert_triggered "In stderr.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
487
491
|
expect { $stderr.print "xxx" }.must_output(nil, "blah")
|
@@ -491,7 +495,7 @@ describe Minitest::Spec do
|
|
491
495
|
it "needs to verify output in stdout" do
|
492
496
|
@assertion_count -= 1 # no msg
|
493
497
|
|
494
|
-
|
498
|
+
assert_success expect { print "blah" }.must_output("blah")
|
495
499
|
|
496
500
|
assert_triggered "In stdout.\nExpected: \"blah\"\n Actual: \"xxx\"" do
|
497
501
|
expect { print "xxx" }.must_output("blah")
|
@@ -501,7 +505,7 @@ describe Minitest::Spec do
|
|
501
505
|
it "needs to verify regexp matches" do
|
502
506
|
@assertion_count += 3 # must_match is 2 assertions
|
503
507
|
|
504
|
-
_(
|
508
|
+
assert_success _("blah").must_match(/\w+/)
|
505
509
|
|
506
510
|
assert_triggered "Expected /\\d+/ to match \"blah\"." do
|
507
511
|
_("blah").must_match(/\d+/)
|
@@ -567,12 +571,28 @@ describe Minitest::Spec do
|
|
567
571
|
(1 + 1).must_equal 2
|
568
572
|
end
|
569
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
|
570
590
|
end
|
571
591
|
|
572
592
|
it "needs to verify throw" do
|
573
593
|
@assertion_count += 2 # 2 extra tests
|
574
594
|
|
575
|
-
|
595
|
+
assert_success expect { throw :blah }.must_throw(:blah)
|
576
596
|
|
577
597
|
assert_triggered "Expected :blah to have been thrown." do
|
578
598
|
expect {}.must_throw :blah
|
@@ -592,7 +612,7 @@ describe Minitest::Spec do
|
|
592
612
|
end
|
593
613
|
|
594
614
|
it "needs to verify types of objects" do
|
595
|
-
_(
|
615
|
+
assert_success _(6 * 7).must_be_instance_of(Int)
|
596
616
|
|
597
617
|
exp = "Expected 42 to be an instance of String, not #{Int.name}."
|
598
618
|
|
@@ -608,7 +628,7 @@ describe Minitest::Spec do
|
|
608
628
|
it "needs to verify using any (negative) predicate" do
|
609
629
|
@assertion_count -= 1 # doesn"t take a message
|
610
630
|
|
611
|
-
_(
|
631
|
+
assert_success _("blah").wont_be(:empty?)
|
612
632
|
|
613
633
|
assert_triggered "Expected \"\" to not be empty?." do
|
614
634
|
_("").wont_be :empty?
|
@@ -618,7 +638,7 @@ describe Minitest::Spec do
|
|
618
638
|
it "needs to verify using any binary operator" do
|
619
639
|
@assertion_count -= 1 # no msg
|
620
640
|
|
621
|
-
_(
|
641
|
+
assert_success _(41).must_be(:<, 42)
|
622
642
|
|
623
643
|
assert_triggered "Expected 42 to be < 41." do
|
624
644
|
_(42).must_be(:<, 41)
|
@@ -628,7 +648,7 @@ describe Minitest::Spec do
|
|
628
648
|
it "needs to verify using any predicate" do
|
629
649
|
@assertion_count -= 1 # no msg
|
630
650
|
|
631
|
-
_(
|
651
|
+
assert_success _("").must_be(:empty?)
|
632
652
|
|
633
653
|
assert_triggered "Expected \"blah\" to be empty?." do
|
634
654
|
_("blah").must_be :empty?
|
@@ -636,7 +656,7 @@ describe Minitest::Spec do
|
|
636
656
|
end
|
637
657
|
|
638
658
|
it "needs to verify using respond_to" do
|
639
|
-
_(
|
659
|
+
assert_success _(42).must_respond_to(:+)
|
640
660
|
|
641
661
|
assert_triggered "Expected 42 (#{Int.name}) to respond to #clear." do
|
642
662
|
_(42).must_respond_to :clear
|
@@ -75,9 +75,13 @@ class TestMinitestUnit < MetaMetaMetaTestCase
|
|
75
75
|
assert_equal ex, fu
|
76
76
|
end
|
77
77
|
|
78
|
-
|
79
|
-
|
80
|
-
|
78
|
+
def test_filter_backtrace__empty
|
79
|
+
with_empty_backtrace_filter do
|
80
|
+
bt = %w[first second third]
|
81
|
+
fu = Minitest.filter_backtrace bt.dup
|
82
|
+
assert_equal bt, fu
|
83
|
+
end
|
84
|
+
end
|
81
85
|
|
82
86
|
def test_infectious_binary_encoding
|
83
87
|
@tu = Class.new FakeNamedTest do
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.14.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTIwMTIyMjIwMzgzMFoXDTIxMTIyMjIwMzgzMFowRTETMBEGA1UE
|
16
16
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
17
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
18
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -22,14 +22,14 @@ cert_chain:
|
|
22
22
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
23
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
24
|
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
AQAE3XRm1YZcCVjAJy5yMZvTOFrS7B2SYErc+0QwmKYbHztTTDY2m5Bii+jhpuxh
|
26
|
+
H+ETcU1z8TUKLpsBUP4kUpIRowkVN1p/jKapV8T3Rbwq+VuYFe+GMKsf8wGZSecG
|
27
|
+
oMQ8DzzauZfbvhe2kDg7G9BBPU0wLQlY25rDcCy9bLnD7R0UK3ONqpwvsI5I7x5X
|
28
|
+
ZIMXR0a9/DG+55mawwdGzCQobDKiSNLK89KK7OcNTALKU0DfgdTkktdgKchzKHqZ
|
29
|
+
d/AHw/kcnU6iuMUoJEcGiJd4gVCTn1l3cDcIvxakGslCA88Jubw0Sqatan0TnC9g
|
30
|
+
KToW560QIey7SPfHWduzFJnV
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2021-02-24 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rdoc
|
@@ -57,14 +57,14 @@ dependencies:
|
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
60
|
+
version: '3.22'
|
61
61
|
type: :development
|
62
62
|
prerelease: false
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '3.
|
67
|
+
version: '3.22'
|
68
68
|
description: |-
|
69
69
|
minitest provides a complete suite of testing facilities supporting
|
70
70
|
TDD, BDD, mocking, and benchmarking.
|
@@ -158,8 +158,10 @@ files:
|
|
158
158
|
homepage: https://github.com/seattlerb/minitest
|
159
159
|
licenses:
|
160
160
|
- MIT
|
161
|
-
metadata:
|
162
|
-
|
161
|
+
metadata:
|
162
|
+
homepage_uri: https://github.com/seattlerb/minitest
|
163
|
+
bug_tracker_uri: https://github.com/seattlerb/minitest/issues
|
164
|
+
post_install_message:
|
163
165
|
rdoc_options:
|
164
166
|
- "--main"
|
165
167
|
- README.rdoc
|
@@ -167,17 +169,20 @@ require_paths:
|
|
167
169
|
- lib
|
168
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
171
|
requirements:
|
170
|
-
- - "
|
172
|
+
- - ">="
|
171
173
|
- !ruby/object:Gem::Version
|
172
174
|
version: '2.2'
|
175
|
+
- - "<"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '4.0'
|
173
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
179
|
requirements:
|
175
180
|
- - ">="
|
176
181
|
- !ruby/object:Gem::Version
|
177
182
|
version: '0'
|
178
183
|
requirements: []
|
179
|
-
rubygems_version: 3.
|
180
|
-
signing_key:
|
184
|
+
rubygems_version: 3.1.4
|
185
|
+
signing_key:
|
181
186
|
specification_version: 4
|
182
187
|
summary: minitest provides a complete suite of testing facilities supporting TDD,
|
183
188
|
BDD, mocking, and benchmarking
|
metadata.gz.sig
CHANGED
Binary file
|