minitest 5.16.1 → 5.16.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 +9 -0
- data/lib/minitest/mock.rb +26 -11
- data/lib/minitest/test.rb +9 -2
- data/lib/minitest.rb +1 -1
- data/test/minitest/test_minitest_mock.rb +41 -5
- data/test/minitest/test_minitest_test.rb +47 -0
- data.tar.gz.sig +0 -0
- metadata +4 -4
- 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: f8a4c5be93a57704279d69e9de71e39a726d553e5f8e75ef98fca8606b5543bf
|
4
|
+
data.tar.gz: e821d2c514f6fdc21698c3b6f1c1dbba39de57817c1c7710881082cdce382371
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35335793acd5044353c3fae7e59f62c15ed321f8637e20aef8fa82269c1e2d1670f2ef92363cd94c56708e2eae50d95e7b22fed3a35219c2010f4c6a40748f9c
|
7
|
+
data.tar.gz: 41540290647a9fd33739b43f99bff035c4371f0f0d3e4021e8e2502fd4c02f0e10efb787ca48e31276a59c64e627a837515bbeb9e6795bb48e6f89b704c007a8
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 5.16.2 / 2022-07-03
|
2
|
+
|
3
|
+
* 4 bug fixes:
|
4
|
+
|
5
|
+
* Added MT_KWARGS_HACK kludge for stub to deal with ruby 2.7 kwargs nastiness. (tsugimoto)
|
6
|
+
* In #expect, pop Hash class from args if $MT_KWARGS_HACK. (casperisfine)
|
7
|
+
* In above scenario, set expected kwargs (as Objects) based on actual kwargs.
|
8
|
+
* Nuke ivars if exception fails to marshal twice (eg better_errors). (irphilli)
|
9
|
+
|
1
10
|
=== 5.16.1 / 2022-06-20
|
2
11
|
|
3
12
|
* 2 bug fixes:
|
data/lib/minitest/mock.rb
CHANGED
@@ -98,7 +98,8 @@ module Minitest # :nodoc:
|
|
98
98
|
else
|
99
99
|
raise ArgumentError, "args must be an array" unless Array === args
|
100
100
|
|
101
|
-
if ENV["MT_KWARGS_HAC\K"] && Hash === args.last
|
101
|
+
if ENV["MT_KWARGS_HAC\K"] && (Hash === args.last ||
|
102
|
+
Hash == args.last) then
|
102
103
|
if kwargs.empty? then
|
103
104
|
kwargs = args.pop
|
104
105
|
else
|
@@ -167,6 +168,9 @@ module Minitest # :nodoc:
|
|
167
168
|
expected_args, expected_kwargs, retval, val_block =
|
168
169
|
expected_call.values_at(:args, :kwargs, :retval, :block)
|
169
170
|
|
171
|
+
expected_kwargs = kwargs.map { |ak, av| [ak, Object] }.to_h if
|
172
|
+
Hash == expected_kwargs
|
173
|
+
|
170
174
|
if val_block then
|
171
175
|
# keep "verify" happy
|
172
176
|
@actual_calls[sym] << expected_call
|
@@ -280,22 +284,33 @@ class Object
|
|
280
284
|
|
281
285
|
metaclass.send :alias_method, new_name, name
|
282
286
|
|
283
|
-
|
284
|
-
|
285
|
-
if
|
287
|
+
if ENV["MT_KWARGS_HAC\K"] then
|
288
|
+
metaclass.send :define_method, name do |*args, &blk|
|
289
|
+
if val_or_callable.respond_to? :call then
|
286
290
|
val_or_callable.call(*args, &blk)
|
287
291
|
else
|
288
|
-
|
292
|
+
blk.call(*block_args, **block_kwargs) if blk
|
293
|
+
val_or_callable
|
289
294
|
end
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
295
|
+
end
|
296
|
+
else
|
297
|
+
metaclass.send :define_method, name do |*args, **kwargs, &blk|
|
298
|
+
if val_or_callable.respond_to? :call then
|
299
|
+
if kwargs.empty? then # FIX: drop this after 2.7 dead
|
300
|
+
val_or_callable.call(*args, &blk)
|
294
301
|
else
|
295
|
-
|
302
|
+
val_or_callable.call(*args, **kwargs, &blk)
|
303
|
+
end
|
304
|
+
else
|
305
|
+
if blk then
|
306
|
+
if block_kwargs.empty? then # FIX: drop this after 2.7 dead
|
307
|
+
blk.call(*block_args)
|
308
|
+
else
|
309
|
+
blk.call(*block_args, **block_kwargs)
|
310
|
+
end
|
296
311
|
end
|
312
|
+
val_or_callable
|
297
313
|
end
|
298
|
-
val_or_callable
|
299
314
|
end
|
300
315
|
end
|
301
316
|
|
data/lib/minitest/test.rb
CHANGED
@@ -216,12 +216,19 @@ module Minitest
|
|
216
216
|
rescue TypeError
|
217
217
|
msg.prepend "Neutered Exception #{e.class}: "
|
218
218
|
|
219
|
-
new_exception RuntimeError, msg, bt
|
219
|
+
new_exception RuntimeError, msg, bt, true # but if this raises, we die
|
220
220
|
end
|
221
221
|
|
222
|
-
def new_exception klass, msg, bt
|
222
|
+
def new_exception klass, msg, bt, kill = false
|
223
223
|
ne = klass.new msg
|
224
224
|
ne.set_backtrace bt
|
225
|
+
|
226
|
+
if kill then
|
227
|
+
ne.instance_variables.each do |v|
|
228
|
+
ne.remove_instance_variable v
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
225
232
|
Marshal.dump ne # can raise TypeError
|
226
233
|
ne
|
227
234
|
end
|
data/lib/minitest.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
require "minitest/autorun"
|
2
2
|
|
3
|
+
def with_kwargs_env
|
4
|
+
ENV["MT_KWARGS_HAC\K"] = "1"
|
5
|
+
|
6
|
+
yield
|
7
|
+
ensure
|
8
|
+
ENV.delete "MT_KWARGS_HAC\K"
|
9
|
+
end
|
10
|
+
|
3
11
|
class TestMinitestMock < Minitest::Test
|
4
12
|
parallelize_me!
|
5
13
|
|
@@ -363,12 +371,20 @@ class TestMinitestMock < Minitest::Test
|
|
363
371
|
assert_mock mock
|
364
372
|
end
|
365
373
|
|
366
|
-
def
|
367
|
-
|
374
|
+
def test_mock_allow_all_kwargs__old_style_env
|
375
|
+
with_kwargs_env do
|
376
|
+
mock = Minitest::Mock.new
|
377
|
+
mock.expect :foo, true, [Hash]
|
378
|
+
assert_equal true, mock.foo(bar: 42)
|
379
|
+
end
|
380
|
+
end
|
368
381
|
|
369
|
-
|
370
|
-
|
371
|
-
|
382
|
+
def test_mock_allow_all_kwargs__old_style_env__rewrite
|
383
|
+
with_kwargs_env do
|
384
|
+
mock = Minitest::Mock.new
|
385
|
+
mock.expect :foo, true, [], bar: Integer
|
386
|
+
assert_equal true, mock.foo(bar: 42)
|
387
|
+
end
|
372
388
|
end
|
373
389
|
|
374
390
|
def test_mock_block_is_passed_keyword_args__args__old_style_bad
|
@@ -822,6 +838,26 @@ class TestMinitestStub < Minitest::Test
|
|
822
838
|
end
|
823
839
|
end
|
824
840
|
|
841
|
+
def test_stub__hash_as_last_real_arg
|
842
|
+
with_kwargs_env do
|
843
|
+
token = Object.new
|
844
|
+
def token.create_with_retry u, p; raise "shouldn't see this"; end
|
845
|
+
|
846
|
+
controller = Object.new
|
847
|
+
controller.define_singleton_method :create do |u, p|
|
848
|
+
token.create_with_retry u, p
|
849
|
+
end
|
850
|
+
|
851
|
+
params = Object.new
|
852
|
+
def params.to_hash; raise "nah"; end
|
853
|
+
|
854
|
+
token.stub(:create_with_retry, ->(u, p) { 42 }) do
|
855
|
+
act = controller.create :u, params
|
856
|
+
@tc.assert_equal 42, act
|
857
|
+
end
|
858
|
+
end
|
859
|
+
end
|
860
|
+
|
825
861
|
def test_stub_callable_block_5 # from tenderlove
|
826
862
|
@assertion_count += 1
|
827
863
|
Foo.stub5 :blocking, Bar.new do
|
@@ -786,6 +786,13 @@ class TestMinitestUnitOrder < MetaMetaMetaTestCase
|
|
786
786
|
end
|
787
787
|
end
|
788
788
|
|
789
|
+
class BetterError < RuntimeError # like better_error w/o infecting RuntimeError
|
790
|
+
def set_backtrace bt
|
791
|
+
super
|
792
|
+
@bad_ivar = binding
|
793
|
+
end
|
794
|
+
end
|
795
|
+
|
789
796
|
class TestMinitestRunnable < Minitest::Test
|
790
797
|
def setup_marshal klass
|
791
798
|
tc = klass.new "whatever"
|
@@ -895,6 +902,46 @@ class TestMinitestRunnable < Minitest::Test
|
|
895
902
|
assert_equal @tc.failures, over_the_wire.failures
|
896
903
|
assert_equal @tc.klass, over_the_wire.klass
|
897
904
|
end
|
905
|
+
|
906
|
+
def with_runtime_error klass
|
907
|
+
old_runtime = RuntimeError
|
908
|
+
Object.send :remove_const, :RuntimeError
|
909
|
+
Object.const_set :RuntimeError, klass
|
910
|
+
yield
|
911
|
+
ensure
|
912
|
+
Object.send :remove_const, :RuntimeError
|
913
|
+
Object.const_set :RuntimeError, old_runtime
|
914
|
+
end
|
915
|
+
|
916
|
+
def test_spec_marshal_with_exception__better_error_typeerror
|
917
|
+
klass = describe("whatever") {
|
918
|
+
it("raises with binding") {
|
919
|
+
raise BetterError, "boom"
|
920
|
+
}
|
921
|
+
}
|
922
|
+
|
923
|
+
rm = klass.runnable_methods.first
|
924
|
+
|
925
|
+
# Run the test
|
926
|
+
@tc = with_runtime_error BetterError do
|
927
|
+
klass.new(rm).run
|
928
|
+
end
|
929
|
+
|
930
|
+
assert_kind_of Minitest::Result, @tc
|
931
|
+
assert_instance_of Minitest::UnexpectedError, @tc.failure
|
932
|
+
|
933
|
+
msg = @tc.failure.error.message
|
934
|
+
assert_equal "Neutered Exception BetterError: boom", msg
|
935
|
+
|
936
|
+
# Pass it over the wire
|
937
|
+
over_the_wire = Marshal.load Marshal.dump @tc
|
938
|
+
|
939
|
+
assert_equal @tc.time, over_the_wire.time
|
940
|
+
assert_equal @tc.name, over_the_wire.name
|
941
|
+
assert_equal @tc.assertions, over_the_wire.assertions
|
942
|
+
assert_equal @tc.failures, over_the_wire.failures
|
943
|
+
assert_equal @tc.klass, over_the_wire.klass
|
944
|
+
end
|
898
945
|
end
|
899
946
|
|
900
947
|
class TestMinitestTest < TestMinitestRunnable
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minitest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.16.
|
4
|
+
version: 5.16.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
JFmxn4h9YO/pVdB962BdBNNDia0kgIjI3ENnkLq0dKpYU3+F3KhEuTksLO0L6X/V
|
30
30
|
YsuyUzsMz6GQA4khyaMgKNSD
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2022-
|
32
|
+
date: 2022-07-03 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.24'
|
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.24'
|
68
68
|
description: |-
|
69
69
|
minitest provides a complete suite of testing facilities supporting
|
70
70
|
TDD, BDD, mocking, and benchmarking.
|
metadata.gz.sig
CHANGED
Binary file
|