minitest 5.12.2 → 5.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2641be64df14346ec6637e9fa14064f8f52935d4f3c67acf11bc4e2d3b95986
4
- data.tar.gz: 9c9c1be3371b73c68ebfda92173d5c468d584e0cd4e405329453027397a651f7
3
+ metadata.gz: 36b98534b771e1eb6b67bae4b151e957f74f7e2159b589c3527e5eb0762aaa94
4
+ data.tar.gz: c5e6fab215fc67cf3133867954b55d438b00d11c1fa2df17efe456fc2ea29fb3
5
5
  SHA512:
6
- metadata.gz: e04d9e566ec0d8175bb18cee72a44bee41f363fa4dea11d8b14e6373ae4ef489d3ee01fd8308cb9ba7b710d75e25d13650cd452a61017e151ce7616bebb6bd93
7
- data.tar.gz: 3d324b4e1c1fc3ba294fd6806a3069df391a950b1594b27110accc0d0afe069d1b9555760555372bb597f0f6e99afbe9cc71bd2a049d1a74f7e9f385f4bc7322
6
+ metadata.gz: ee628ae22e60b6457c8896b86e35cef293d2bd16277b9ed55ebb7b866a98c65087ca09416c214476c821a2147e40ad3ca0a7eeab9c6ce43f19e68807b5f1753e
7
+ data.tar.gz: 99c5476047e5418137429ea4d8a5ead8d6f2bca2fb5e316dcff656d083d318ee2b19b66ce2365ee639b6217ef1ad5c22fda103497953639aebb0c5876c8f0683
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,23 @@
1
+ === 5.13.0 / 2019-10-29
2
+
3
+ * 9 minor enhancements:
4
+
5
+ * Added Minitest::Guard#osx?
6
+ * Added examples to documentation for assert_raises. (lxxxvi)
7
+ * Added expectations #path_must_exist and #path_wont_exist. Not thrilled with the names.
8
+ * Added fail_after(year, month, day, msg) to allow time-bombing after a deadline.
9
+ * Added skip_until(year, month, day, msg) to allow deferring until a deadline.
10
+ * Deprecated Minitest::Guard#maglev?
11
+ * Deprecated Minitest::Guard#rubinius?
12
+ * Finally added assert_path_exists and refute_path_exists. (deivid-rodriguez)
13
+ * Refactored and pulled Assertions#things_to_diff out of #diff. (BurdetteLamar)
14
+
15
+ * 3 bug fixes:
16
+
17
+ * Fix autorun bug that affects fork exit status in tests. (dylanahsmith/jhawthorn)
18
+ * Improved documentation for _/value/expect, especially for blocks. (svoop)
19
+ * Support new Proc#to_s format. (ko1)
20
+
1
21
  === 5.12.2 / 2019-09-28
2
22
 
3
23
  * 1 bug fix:
@@ -8,7 +8,7 @@ require "stringio"
8
8
  # :include: README.rdoc
9
9
 
10
10
  module Minitest
11
- VERSION = "5.12.2" # :nodoc:
11
+ VERSION = "5.13.0" # :nodoc:
12
12
  ENCS = "".respond_to? :encoding # :nodoc:
13
13
 
14
14
  @@installed_at_exit ||= false
@@ -58,7 +58,9 @@ module Minitest
58
58
 
59
59
  exit_code = nil
60
60
 
61
+ pid = Process.pid
61
62
  at_exit {
63
+ next if Process.pid != pid
62
64
  @@after_run.reverse_each(&:call)
63
65
  exit exit_code || false
64
66
  }
@@ -958,6 +960,9 @@ module Minitest
958
960
  # Is this running on maglev?
959
961
 
960
962
  def maglev? platform = defined?(RUBY_ENGINE) && RUBY_ENGINE
963
+ where = Minitest.filter_backtrace(caller).first
964
+ where = where.split(/:in /, 2).first # clean up noise
965
+ warn "DEPRECATED: `maglev?` called from #{where}. This will fail in Minitest 6."
961
966
  "maglev" == platform
962
967
  end
963
968
 
@@ -968,10 +973,20 @@ module Minitest
968
973
  /^ruby/ =~ platform
969
974
  end
970
975
 
976
+ ##
977
+ # Is this running on macOS?
978
+
979
+ def osx? platform = RUBY_PLATFORM
980
+ /darwin/ =~ platform
981
+ end
982
+
971
983
  ##
972
984
  # Is this running on rubinius?
973
985
 
974
986
  def rubinius? platform = defined?(RUBY_ENGINE) && RUBY_ENGINE
987
+ where = Minitest.filter_backtrace(caller).first
988
+ where = where.split(/:in /, 2).first # clean up noise
989
+ warn "DEPRECATED: `rubinius?` called from #{where}. This will fail in Minitest 6."
975
990
  "rbx" == platform
976
991
  end
977
992
 
@@ -32,8 +32,6 @@ module Minitest
32
32
  @diff = if (RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ &&
33
33
  system("diff.exe", __FILE__, __FILE__)) then
34
34
  "diff.exe -u"
35
- elsif Minitest::Test.maglev? then
36
- "diff -u"
37
35
  elsif system("gdiff", __FILE__, __FILE__)
38
36
  "gdiff -u" # solaris and kin suck
39
37
  elsif system("diff", __FILE__, __FILE__)
@@ -55,25 +53,16 @@ module Minitest
55
53
  # diff command or if it doesn't make sense to diff the output
56
54
  # (single line, short output), then it simply returns a basic
57
55
  # comparison between the two.
56
+ #
57
+ # See +things_to_diff+ for more info.
58
58
 
59
59
  def diff exp, act
60
- expect = mu_pp_for_diff exp
61
- butwas = mu_pp_for_diff act
62
60
  result = nil
63
61
 
64
- e1, e2 = expect.include?("\n"), expect.include?("\\n")
65
- b1, b2 = butwas.include?("\n"), butwas.include?("\\n")
66
-
67
- need_to_diff =
68
- (e1 ^ e2 ||
69
- b1 ^ b2 ||
70
- expect.size > 30 ||
71
- butwas.size > 30 ||
72
- expect == butwas) &&
73
- Minitest::Assertions.diff
62
+ expect, butwas = things_to_diff(exp, act)
74
63
 
75
64
  return "Expected: #{mu_pp exp}\n Actual: #{mu_pp act}" unless
76
- need_to_diff
65
+ expect
77
66
 
78
67
  Tempfile.open("expect") do |a|
79
68
  a.puts expect
@@ -102,6 +91,34 @@ module Minitest
102
91
  result
103
92
  end
104
93
 
94
+ ##
95
+ # Returns things to diff [expect, butwas], or [nil, nil] if nothing to diff.
96
+ #
97
+ # Criterion:
98
+ #
99
+ # 1. Strings include newlines or escaped newlines, but not both.
100
+ # 2. or: String lengths are > 30 characters.
101
+ # 3. or: Strings are equal to each other (but maybe different encodings?).
102
+ # 4. and: we found a diff executable.
103
+
104
+ def things_to_diff exp, act
105
+ expect = mu_pp_for_diff exp
106
+ butwas = mu_pp_for_diff act
107
+
108
+ e1, e2 = expect.include?("\n"), expect.include?("\\n")
109
+ b1, b2 = butwas.include?("\n"), butwas.include?("\\n")
110
+
111
+ need_to_diff =
112
+ (e1 ^ e2 ||
113
+ b1 ^ b2 ||
114
+ expect.size > 30 ||
115
+ butwas.size > 30 ||
116
+ expect == butwas) &&
117
+ Minitest::Assertions.diff
118
+
119
+ need_to_diff && [expect, butwas]
120
+ end
121
+
105
122
  ##
106
123
  # This returns a human-readable version of +obj+. By default
107
124
  # #inspect is called. You can override this to use #pretty_inspect
@@ -326,6 +343,14 @@ module Minitest
326
343
  (!stdout || x) && (!stderr || y)
327
344
  end
328
345
 
346
+ ##
347
+ # Fails unless +path+ exists.
348
+
349
+ def assert_path_exists path, msg = nil
350
+ msg = message(msg) { "Expected path '#{path}' to exist" }
351
+ assert File.exist?(path), msg
352
+ end
353
+
329
354
  ##
330
355
  # For testing with predicates. Eg:
331
356
  #
@@ -346,7 +371,21 @@ module Minitest
346
371
  #
347
372
  # +exp+ takes an optional message on the end to help explain
348
373
  # failures and defaults to StandardError if no exception class is
349
- # passed.
374
+ # passed. Eg:
375
+ #
376
+ # assert_raises(CustomError) { method_with_custom_error }
377
+ #
378
+ # With custom error message:
379
+ #
380
+ # assert_raises(CustomError, 'This should have raised CustomError') { method_with_custom_error }
381
+ #
382
+ # Using the returned object:
383
+ #
384
+ # error = assert_raises(CustomError) do
385
+ # raise CustomError, 'This is really bad'
386
+ # end
387
+ #
388
+ # assert_equal 'This is really bad', error.message
350
389
 
351
390
  def assert_raises *exp
352
391
  flunk "assert_raises requires a block to capture errors." unless
@@ -537,7 +576,16 @@ module Minitest
537
576
  end
538
577
 
539
578
  ##
540
- # Fails with +msg+
579
+ # Fails after a given date (in the local time zone). This allows
580
+ # you to put time-bombs in your tests if you need to keep
581
+ # something around until a later date lest you forget about it.
582
+
583
+ def fail_after y,m,d,msg
584
+ flunk msg if Time.now > Time.local(y, m, d)
585
+ end
586
+
587
+ ##
588
+ # Fails with +msg+.
541
589
 
542
590
  def flunk msg = nil
543
591
  msg ||= "Epic Fail!"
@@ -671,6 +719,14 @@ module Minitest
671
719
  refute o1.__send__(op, o2), msg
672
720
  end
673
721
 
722
+ ##
723
+ # Fails if +path+ exists.
724
+
725
+ def refute_path_exists path, msg = nil
726
+ msg = message(msg) { "Expected path '#{path}' to not exist" }
727
+ refute File.exist?(path), msg
728
+ end
729
+
674
730
  ##
675
731
  # For testing with predicates.
676
732
  #
@@ -716,6 +772,18 @@ module Minitest
716
772
  raise Minitest::Skip, msg, bt
717
773
  end
718
774
 
775
+ ##
776
+ # Skips the current run until a given date (in the local time
777
+ # zone). This allows you to put some fixes on hold until a later
778
+ # date, but still holds you accountable and prevents you from
779
+ # forgetting it.
780
+
781
+ def skip_until y,m,d,msg
782
+ skip msg if Time.now < Time.local(y, m, d)
783
+ where = caller.first.split(/:/, 3).first(2).join ":"
784
+ warn "Stale skip_until %p at %s" % [msg, where]
785
+ end
786
+
719
787
  ##
720
788
  # Was this testcase skipped? Meant for #teardown.
721
789
 
@@ -168,6 +168,24 @@ module Minitest::Expectations
168
168
 
169
169
  infect_an_assertion :assert_throws, :must_throw, :block
170
170
 
171
+ ##
172
+ # See Minitest::Assertions#assert_path_exists
173
+ #
174
+ # _(some_path).path_must_exist
175
+ #
176
+ # :method: path_must_exist
177
+
178
+ infect_an_assertion :assert_path_exists, :path_must_exist, :unary
179
+
180
+ ##
181
+ # See Minitest::Assertions#refute_path_exists
182
+ #
183
+ # _(some_path).path_wont_exist
184
+ #
185
+ # :method: path_wont_exist
186
+
187
+ infect_an_assertion :refute_path_exists, :path_wont_exist, :unary
188
+
171
189
  ##
172
190
  # See Minitest::Assertions#refute_empty
173
191
  #
@@ -289,21 +289,28 @@ class Minitest::Spec < Minitest::Test
289
289
 
290
290
  module InstanceMethods
291
291
  ##
292
- # Returns a value monad that has all of Expectations methods
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
- # Also aliased to #value and #expect for your aesthetic pleasure:
295
+ # _(1 + 1).must_equal 2
296
296
  #
297
- # _(1 + 1).must_equal 2
298
- # value(1 + 1).must_equal 2
299
- # expect(1 + 1).must_equal 2
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 and then
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
@@ -25,6 +25,14 @@ class AnError < StandardError; include MyModule; end
25
25
  class MetaMetaMetaTestCase < Minitest::Test
26
26
  attr_accessor :reporter, :output, :tu
27
27
 
28
+ def with_stderr err
29
+ old = $stderr
30
+ $stderr = err
31
+ yield
32
+ ensure
33
+ $stderr = old
34
+ end
35
+
28
36
  def run_tu_with_fresh_reporter flags = %w[--seed 42]
29
37
  options = Minitest.process_args flags
30
38
 
@@ -34,18 +42,20 @@ class MetaMetaMetaTestCase < Minitest::Test
34
42
  reporter << Minitest::SummaryReporter.new(@output, options)
35
43
  reporter << Minitest::ProgressReporter.new(@output, options)
36
44
 
37
- reporter.start
45
+ with_stderr @output do
46
+ reporter.start
38
47
 
39
- yield(reporter) if block_given?
48
+ yield(reporter) if block_given?
40
49
 
41
- @tus ||= [@tu]
42
- @tus.each do |tu|
43
- Minitest::Runnable.runnables.delete tu
50
+ @tus ||= [@tu]
51
+ @tus.each do |tu|
52
+ Minitest::Runnable.runnables.delete tu
44
53
 
45
- tu.run reporter, options
46
- end
54
+ tu.run reporter, options
55
+ end
47
56
 
48
- reporter.report
57
+ reporter.report
58
+ end
49
59
  end
50
60
 
51
61
  def first_reporter
@@ -84,6 +94,8 @@ class MetaMetaMetaTestCase < Minitest::Test
84
94
  output.gsub!(/^(\s+)[^:]+:\d+:in/, '\1FILE:LINE:in')
85
95
  end
86
96
 
97
+ output.gsub!(/( at )[^:]+:\d+/, '\1[FILE:LINE]')
98
+
87
99
  output
88
100
  end
89
101
 
@@ -397,7 +397,7 @@ class TestMinitestAssertions < Minitest::Test
397
397
  end
398
398
 
399
399
  def test_assert_in_delta_triggered
400
- x = maglev? ? "9.999999xxxe-07" : "1.0e-06"
400
+ x = "1.0e-06"
401
401
  assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
402
402
  @tc.assert_in_delta 0.0, 1.0 / 1000, 0.000001
403
403
  end
@@ -428,7 +428,7 @@ class TestMinitestAssertions < Minitest::Test
428
428
 
429
429
  def test_assert_in_epsilon_triggered_negative_case
430
430
  x = (RUBY18 and not maglev?) ? "0.1" : "0.100000xxx"
431
- y = maglev? ? "0.100000xxx" : "0.1"
431
+ y = "0.1"
432
432
  assert_triggered "Expected |-1.1 - -1| (#{x}) to be <= #{y}." do
433
433
  @tc.assert_in_epsilon(-1.1, -1, 0.1)
434
434
  end
@@ -906,6 +906,16 @@ class TestMinitestAssertions < Minitest::Test
906
906
  end
907
907
  end
908
908
 
909
+ def test_assert_path_exists
910
+ @tc.assert_path_exists __FILE__
911
+ end
912
+
913
+ def test_assert_path_exists_triggered
914
+ assert_triggered "Expected path 'blah' to exist." do
915
+ @tc.assert_path_exists "blah"
916
+ end
917
+ end
918
+
909
919
  def test_capture_io
910
920
  @assertion_count = 0
911
921
 
@@ -978,6 +988,19 @@ class TestMinitestAssertions < Minitest::Test
978
988
  end
979
989
  end
980
990
 
991
+ def test_fail_after
992
+ t = Time.now
993
+ y, m, d = t.year, t.month, t.day
994
+
995
+ assert_silent do
996
+ @tc.fail_after y, m, d+1, "remove the deprecations"
997
+ end
998
+
999
+ assert_triggered "remove the deprecations" do
1000
+ @tc.fail_after y, m, d, "remove the deprecations"
1001
+ end
1002
+ end
1003
+
981
1004
  def test_flunk
982
1005
  assert_triggered "Epic Fail!" do
983
1006
  @tc.flunk
@@ -1029,7 +1052,7 @@ class TestMinitestAssertions < Minitest::Test
1029
1052
  end
1030
1053
 
1031
1054
  def test_refute_in_delta_triggered
1032
- x = maglev? ? "0.100000xxx" : "0.1"
1055
+ x = "0.1"
1033
1056
  assert_triggered "Expected |0.0 - 0.001| (0.001) to not be <= #{x}." do
1034
1057
  @tc.refute_in_delta 0.0, 1.0 / 1000, 0.1
1035
1058
  end
@@ -1171,6 +1194,16 @@ class TestMinitestAssertions < Minitest::Test
1171
1194
  end
1172
1195
  end
1173
1196
 
1197
+ def test_refute_path_exists
1198
+ @tc.refute_path_exists "blah"
1199
+ end
1200
+
1201
+ def test_refute_path_exists_triggered
1202
+ assert_triggered "Expected path '#{__FILE__}' to not exist." do
1203
+ @tc.refute_path_exists __FILE__
1204
+ end
1205
+ end
1206
+
1174
1207
  def test_skip
1175
1208
  @assertion_count = 0
1176
1209
 
@@ -1179,6 +1212,21 @@ class TestMinitestAssertions < Minitest::Test
1179
1212
  end
1180
1213
  end
1181
1214
 
1215
+ def test_skip_until
1216
+ @assertion_count = 0
1217
+
1218
+ t = Time.now
1219
+ y, m, d = t.year, t.month, t.day
1220
+
1221
+ assert_output "", /Stale skip_until \"not yet\" at .*?:\d+$/ do
1222
+ @tc.skip_until y, m, d, "not yet"
1223
+ end
1224
+
1225
+ assert_triggered "not ready yet", Minitest::Skip do
1226
+ @tc.skip_until y, m, d+1, "not ready yet"
1227
+ end
1228
+ end
1229
+
1182
1230
  def util_msg exp, act, msg = nil
1183
1231
  s = "Expected: #{exp.inspect}\n Actual: #{act.inspect}"
1184
1232
  s = "#{msg}.\n#{s}" if msg
@@ -64,8 +64,6 @@ class TestMinitestMock < Minitest::Test
64
64
  end
65
65
 
66
66
  def test_mock_args_does_not_raise
67
- skip "non-opaque use of ==" if maglev?
68
-
69
67
  arg = Minitest::Mock.new
70
68
  mock = Minitest::Mock.new
71
69
  mock.expect(:foo, nil, [arg])
@@ -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[a-fA-F0-9]{4,}/m, ":0xXXXXXX")
30
+ msg.gsub!(/:0x[Xa-fA-F0-9]{4,}[ @].+?>/, ":0xXXXXXX@PATH>")
32
31
 
33
32
  if expected
34
33
  @assertion_count += 1
@@ -60,6 +59,26 @@ describe Minitest::Spec do
60
59
  end
61
60
  end
62
61
 
62
+ it "needs to check for file existence" do
63
+ @assertion_count = 3
64
+
65
+ _(_(__FILE__).path_must_exist).must_equal true
66
+
67
+ assert_triggered "Expected path 'blah' to exist." do
68
+ _("blah").path_must_exist
69
+ end
70
+ end
71
+
72
+ it "needs to check for file non-existence" do
73
+ @assertion_count = 3
74
+
75
+ _(_("blah").path_wont_exist).must_equal false
76
+
77
+ assert_triggered "Expected path '#{__FILE__}' to not exist." do
78
+ _(__FILE__).path_wont_exist
79
+ end
80
+ end
81
+
63
82
  it "needs to be sensible about must_include order" do
64
83
  @assertion_count += 3 # must_include is 2 assertions
65
84
 
@@ -130,10 +149,10 @@ describe Minitest::Spec do
130
149
 
131
150
  @assertion_count = 2
132
151
 
133
- methods = Object.public_instance_methods.find_all { |n| n =~ /^must|^wont/ }
152
+ methods = Minitest::Expectations.public_instance_methods.grep(/must|wont/)
134
153
  methods.map!(&:to_s) if Symbol === methods.first
135
154
 
136
- musts, wonts = methods.sort.partition { |m| m =~ /^must/ }
155
+ musts, wonts = methods.sort.partition { |m| m =~ /must/ }
137
156
 
138
157
  expected_musts = %w[must_be
139
158
  must_be_close_to
@@ -151,11 +170,12 @@ describe Minitest::Spec do
151
170
  must_output
152
171
  must_raise
153
172
  must_respond_to
154
- must_throw]
173
+ must_throw
174
+ path_must_exist]
155
175
 
156
176
  bad = %w[not raise throw send output be_silent]
157
177
 
158
- expected_wonts = expected_musts.map { |m| m.sub(/^must/, "wont") }
178
+ expected_wonts = expected_musts.map { |m| m.sub(/must/, "wont") }.sort
159
179
  expected_wonts.reject! { |m| m =~ /wont_#{Regexp.union(*bad)}/ }
160
180
 
161
181
  _(musts).must_equal expected_musts
@@ -213,7 +233,7 @@ describe Minitest::Spec do
213
233
  _(6 * 9).must_equal 42, "msg"
214
234
  end
215
235
 
216
- assert_triggered(/^-42\n\+#<Proc:0xXXXXXX@PATH>\n/) do
236
+ assert_triggered(/^-42\n\+#<Proc:0xXXXXXX[ @]PATH>\n/) do
217
237
  _(proc { 42 }).must_equal 42 # proc isn't called, so expectation fails
218
238
  end
219
239
  end
@@ -242,7 +262,7 @@ describe Minitest::Spec do
242
262
  _(6 * 7.0).wont_be_close_to 42
243
263
  end
244
264
 
245
- x = maglev? ? "1.0000000000000001e-05" : "1.0e-05"
265
+ x = "1.0e-05"
246
266
  assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
247
267
  _(6 * 7.0).wont_be_close_to 42, 0.00001
248
268
  end
@@ -257,12 +277,12 @@ describe Minitest::Spec do
257
277
 
258
278
  _(_(24).wont_be_within_epsilon(42)).must_equal false
259
279
 
260
- x = maglev? ? "0.042000000000000003" : "0.042"
280
+ x = "0.042"
261
281
  assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
262
282
  _(6 * 7.0).wont_be_within_epsilon 42
263
283
  end
264
284
 
265
- x = maglev? ? "0.00042000000000000002" : "0.00042"
285
+ x = "0.00042"
266
286
  assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
267
287
  _(6 * 7.0).wont_be_within_epsilon 42, 0.00001
268
288
  end
@@ -281,7 +301,7 @@ describe Minitest::Spec do
281
301
  _(1.0 / 100).must_be_close_to 0.0
282
302
  end
283
303
 
284
- x = maglev? ? "9.9999999999999995e-07" : "1.0e-06"
304
+ x = "1.0e-06"
285
305
  assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
286
306
  _(1.0 / 1000).must_be_close_to 0.0, 0.000001
287
307
  end
@@ -582,8 +582,6 @@ class TestMinitestRunner < MetaMetaMetaTestCase
582
582
  end
583
583
 
584
584
  def test_run_parallel
585
- skip "I don't have ParallelEach debugged yet" if maglev?
586
-
587
585
  test_count = 2
588
586
  test_latch = Latch.new test_count
589
587
  wait_latch = Latch.new test_count
@@ -857,12 +855,7 @@ class TestMinitestUnitTestCase < Minitest::Test
857
855
  end
858
856
 
859
857
  srand 42
860
- expected = case
861
- when maglev? then
862
- %w[test_test2 test_test3 test_test1]
863
- else
864
- %w[test_test2 test_test1 test_test3]
865
- end
858
+ expected = %w[test_test2 test_test1 test_test3]
866
859
  assert_equal expected, sample_test_case.runnable_methods
867
860
  end
868
861
 
@@ -901,6 +894,20 @@ class TestMinitestUnitTestCase < Minitest::Test
901
894
  shitty_test_case.i_suck_and_my_tests_are_order_dependent!
902
895
  end
903
896
  end
897
+
898
+ def test_autorun_does_not_affect_fork_success_status
899
+ @assertion_count = 0
900
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
901
+ Process.waitpid(fork {})
902
+ assert_equal true, $?.success?
903
+ end
904
+
905
+ def test_autorun_does_not_affect_fork_exit_status
906
+ @assertion_count = 0
907
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
908
+ Process.waitpid(fork { exit 42 })
909
+ assert_equal 42, $?.exitstatus
910
+ end
904
911
  end
905
912
 
906
913
  class TestMinitestGuard < Minitest::Test
@@ -917,8 +924,26 @@ class TestMinitestGuard < Minitest::Test
917
924
  end
918
925
 
919
926
  def test_rubinius_eh
920
- assert self.class.rubinius? "rbx"
921
- assert self.rubinius? "rbx"
927
+ assert_output "", /DEPRECATED/ do
928
+ assert self.class.rubinius? "rbx"
929
+ end
930
+ assert_output "", /DEPRECATED/ do
931
+ assert self.rubinius? "rbx"
932
+ end
933
+ end
934
+
935
+ def test_maglev_eh
936
+ assert_output "", /DEPRECATED/ do
937
+ assert self.class.maglev? "maglev"
938
+ end
939
+ assert_output "", /DEPRECATED/ do
940
+ assert self.maglev? "maglev"
941
+ end
942
+ end
943
+
944
+ def test_osx_eh
945
+ assert self.class.osx? "darwin"
946
+ assert self.osx? "darwin"
922
947
  end
923
948
 
924
949
  def test_windows_eh
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.12.2
4
+ version: 5.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  Em82dBUFsipwMLCYj39kcyHWAxyl6Ae1Cn9r/ItVBCxoeFdrHjfavnrIEoXUt4bU
30
30
  UfBugfLD19bu3nvL+zTAGx/U
31
31
  -----END CERTIFICATE-----
32
- date: 2019-09-29 00:00:00.000000000 Z
32
+ date: 2019-10-30 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdoc
metadata.gz.sig CHANGED
@@ -1 +1 @@
1
- nS+�MN4~����g�����d���=������4 z%@A��!~s��,�hK!xOJ����L;��������ǕO�t s99���x2�����AD$\a|��d~{�y \���G���*Ƞ,�7��!_�Ά�b��'nt����"Ƈ’b��h��S �:��fo2�ސo$����{s�څ��^��̢�%��b��jM��F7�v�-�Gc(��l[5u��8K�#s��.�Rze6kY��lm\W�����;�
1
+ ]C��6��{��a�&�)_�;J�ꙜV�����]_5&�`Q[Y����a����`������cV[��qo?�h�y�nҸZ4wz-�:�Z0ܧ�-e}ǹ�3��.Z��p��]u_=���*B��-y f�9�_�kqS�+��:Je�|�e拆̷�vXi��e�XV6�>������׻uI=,���64����לi6�<���kɾދ�,f��,�=7�73�3yN�Gu:I��_�������IW8�