minitest 5.18.1 → 5.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 992b073995b1f8471d46b12e317817e1280f7c25967218dd62520658243f4b97
4
- data.tar.gz: 4265a53b9aa6d02307622cb2b57754137e675a032164303feef25445fe3e2ad7
3
+ metadata.gz: 667a803a272949e7b05440f91a56155ea3977a5b9d364542801889c5a2fe0ff0
4
+ data.tar.gz: 862bf0ff3d24eea4bbe6c7f435ceef19aaa97748f6a87ec3fa51dc218ca79298
5
5
  SHA512:
6
- metadata.gz: dd001c5041d4bb8c59fc348a5ab1c9df657cee56938817d2c9e1e9dcabf0e593e0e70dffe56be52b36bff86545919f3982486d632a3393e847bd4c89f392ed80
7
- data.tar.gz: 6a6045f24033c98a45951e00fec38cd252687cd6e41069c76e22c3cbe9da8f9f4c8a5ed0b663ba009807dbb1dde6cb5b659e712db5383388955f6efa6d7501c3
6
+ metadata.gz: 2284c84ae5f98a3454e9a95417e609ca1a8ef9af8ee8b1fad8f2aca2632fde6a309e266ef1d399d9a7d47337cdcba696500a1b36f1fa7d952615eb390a89e329
7
+ data.tar.gz: a76204f74c2caf693a4302065815b871863ae655372d25fc4d41e416b0d4935704c1e1068457b5cda934312e3915ae8a27595ca962c98e544dd45b54cac2aef7
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,20 @@
1
+ === 5.20.0 / 2023-09-06
2
+
3
+ * 1 minor enhancement:
4
+
5
+ * Optionally allow autorun exit hook to remain active in forked child. (casperisfine)
6
+
7
+ === 5.19.0 / 2023-07-26
8
+
9
+ * 2 minor enhancements:
10
+
11
+ * Add metadata lazy accessor to Runnable / Result. (matteeyah)
12
+ * Only load minitest/unit (aka ancient MiniTest compatibility layer) if ENV["MT_COMPAT"]
13
+
14
+ * 1 bug fix:
15
+
16
+ * Minitest::TestTask enthusiastically added itself to default. (ParadoxV5)
17
+
1
18
  === 5.18.1 / 2023-06-16
2
19
 
3
20
  * 3 bug fixes:
data/lib/minitest/test.rb CHANGED
@@ -141,7 +141,7 @@ module Minitest
141
141
  # end
142
142
  # end
143
143
  #
144
- # class MiniTest::Test
144
+ # class Minitest::Test
145
145
  # include MyMinitestPlugin
146
146
  # end
147
147
 
@@ -245,4 +245,4 @@ module Minitest
245
245
  end # Test
246
246
  end
247
247
 
248
- require "minitest/unit" unless defined?(MiniTest) # compatibility layer only
248
+ require "minitest/unit" if ENV["MT_COMPAT"] # compatibility layer only
@@ -29,6 +29,10 @@ module Minitest # :nodoc:
29
29
  # end
30
30
  #
31
31
  # Customize the name and only run unit tests.
32
+ #
33
+ # NOTE: To hook this task up to the default, make it a dependency:
34
+ #
35
+ # task default: :unit
32
36
 
33
37
  class TestTask < Rake::TaskLib
34
38
  WINDOWS = RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ # :nodoc:
@@ -157,8 +161,6 @@ module Minitest # :nodoc:
157
161
  end
158
162
 
159
163
  def define # :nodoc:
160
- default_tasks = []
161
-
162
164
  desc "Run the test suite. Use N, X, A, and TESTOPTS to add flags/args."
163
165
  task name do
164
166
  ruby make_test_cmd, verbose:verbose
@@ -243,11 +245,6 @@ module Minitest # :nodoc:
243
245
  "sort -n -k2 -t=",
244
246
  "tail -25"].join " | "
245
247
  end
246
-
247
- default_tasks << name
248
-
249
- desc "Run the default task(s)."
250
- task :default => default_tasks
251
248
  end
252
249
 
253
250
  ##
data/lib/minitest.rb CHANGED
@@ -9,7 +9,7 @@ require "etc"
9
9
  # :include: README.rdoc
10
10
 
11
11
  module Minitest
12
- VERSION = "5.18.1" # :nodoc:
12
+ VERSION = "5.20.0" # :nodoc:
13
13
 
14
14
  @@installed_at_exit ||= false
15
15
  @@after_run = []
@@ -60,6 +60,9 @@ module Minitest
60
60
  cattr_accessor :info_signal
61
61
  self.info_signal = "INFO"
62
62
 
63
+ cattr_accessor :allow_fork
64
+ self.allow_fork = false
65
+
63
66
  ##
64
67
  # Registers Minitest to run at process exit
65
68
 
@@ -75,7 +78,7 @@ module Minitest
75
78
 
76
79
  pid = Process.pid
77
80
  at_exit {
78
- next if Process.pid != pid
81
+ next if !Minitest.allow_fork && Process.pid != pid
79
82
  @@after_run.reverse_each(&:call)
80
83
  exit exit_code || false
81
84
  }
@@ -446,6 +449,31 @@ module Minitest
446
449
  self.name = name
447
450
  self.failures = []
448
451
  self.assertions = 0
452
+ # lazy initializer for metadata
453
+ end
454
+
455
+ ##
456
+ # Metadata you attach to the test results that get sent to the reporter.
457
+ #
458
+ # Lazily initializes to a hash, to keep memory down.
459
+ #
460
+ # NOTE: this data *must* be plain (read: marshal-able) data!
461
+ # Hashes! Arrays! Strings!
462
+
463
+ def metadata
464
+ @metadata ||= {}
465
+ end
466
+
467
+ ##
468
+ # Sets metadata, mainly used for +Result.from+.
469
+
470
+ attr_writer :metadata
471
+
472
+ ##
473
+ # Returns true if metadata exists.
474
+
475
+ def metadata?
476
+ defined? @metadata
449
477
  end
450
478
 
451
479
  ##
@@ -566,6 +594,7 @@ module Minitest
566
594
  r.assertions = o.assertions
567
595
  r.failures = o.failures.dup
568
596
  r.time = o.time
597
+ r.metadata = o.metadata if o.metadata?
569
598
 
570
599
  r.source_location = o.method(o.name).source_location rescue ["unknown", -1]
571
600
 
@@ -65,6 +65,12 @@ class TestMinitestReporter < MetaMetaMetaTestCase
65
65
  @pt ||= Minitest::Result.from Minitest::Test.new(:woot)
66
66
  end
67
67
 
68
+ def passing_test_with_metadata
69
+ test = Minitest::Test.new(:woot)
70
+ test.metadata[:meta] = :data
71
+ @pt ||= Minitest::Result.from test
72
+ end
73
+
68
74
  def skip_test
69
75
  unless defined? @st then
70
76
  @st = Minitest::Test.new(:woot)
@@ -166,6 +172,29 @@ class TestMinitestReporter < MetaMetaMetaTestCase
166
172
  assert_equal 0, r.assertions
167
173
  end
168
174
 
175
+ def test_record_pass_with_metadata
176
+ reporter = self.r
177
+
178
+ def reporter.metadata
179
+ @metadata
180
+ end
181
+
182
+ def reporter.record result
183
+ super
184
+ @metadata = result.metadata if result.metadata?
185
+ end
186
+
187
+ r.record passing_test_with_metadata
188
+
189
+ exp = { :meta => :data }
190
+ assert_equal exp, reporter.metadata
191
+
192
+ assert_equal ".", io.string
193
+ assert_empty r.results
194
+ assert_equal 1, r.count
195
+ assert_equal 0, r.assertions
196
+ end
197
+
169
198
  def test_record_fail
170
199
  fail_test = self.fail_test
171
200
  r.record fail_test
@@ -1089,17 +1089,27 @@ class TestMinitestUnitTestCase < Minitest::Test
1089
1089
 
1090
1090
  def test_autorun_does_not_affect_fork_success_status
1091
1091
  @assertion_count = 0
1092
- skip "windows doesn't have skip" unless Process.respond_to?(:fork)
1092
+ skip "windows doesn't have fork" unless Process.respond_to?(:fork)
1093
1093
  Process.waitpid(fork {})
1094
1094
  assert_equal true, $?.success?
1095
1095
  end
1096
1096
 
1097
1097
  def test_autorun_does_not_affect_fork_exit_status
1098
1098
  @assertion_count = 0
1099
- skip "windows doesn't have skip" unless Process.respond_to?(:fork)
1099
+ skip "windows doesn't have fork" unless Process.respond_to?(:fork)
1100
1100
  Process.waitpid(fork { exit 42 })
1101
1101
  assert_equal 42, $?.exitstatus
1102
1102
  end
1103
+
1104
+ def test_autorun_optionally_can_affect_fork_exit_status
1105
+ @assertion_count = 0
1106
+ skip "windows doesn't have fork" unless Process.respond_to?(:fork)
1107
+ Minitest.allow_fork = true
1108
+ Process.waitpid(fork { exit 42 })
1109
+ refute_equal 42, $?.exitstatus
1110
+ ensure
1111
+ Minitest.allow_fork = false
1112
+ end
1103
1113
  end
1104
1114
 
1105
1115
  class TestMinitestGuard < Minitest::Test
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.18.1
4
+ version: 5.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  ROfWo9Uyp8ba/j9eVG14KkYRaLydAY1MNQk2yd3R5CGfeOpD1kttxjoypoUJ2dOG
30
30
  nsNBRuQJ1UfiCG97a6DNm+Fr
31
31
  -----END CERTIFICATE-----
32
- date: 2023-06-16 00:00:00.000000000 Z
32
+ date: 2023-09-06 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdoc
metadata.gz.sig CHANGED
Binary file