minitest 5.21.2 → 5.22.1

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: 8ce2b9e1859837e95d718e90c04edf4ef48df4530dffdcb9f2c48aec68582443
4
- data.tar.gz: 48d94f4183b292b365dbf4eb637309ddce6b15266cd1d34ea7ed46928e30198e
3
+ metadata.gz: 4e826dd27ec8fd1c38cb81a0323e2f16463119c10a4f15838c32d539a8ff2940
4
+ data.tar.gz: f6d5799c7399ceafdd07825931b705d66503828c2269df50d60241a012495982
5
5
  SHA512:
6
- metadata.gz: 29f60464feb3b2f52ed15167cad8bb9c7cb92a496cd7e6d5b427dd5333bdad15eb77b27a48114dd478aa29c645648a507ef03c481302b36a361a90204f5d3b3f
7
- data.tar.gz: 0ab6d7446bb1b65e01604cecc457fd98fa85bb8e510d036a197f1463619a9ff94fe44cc4f0868f29528fa03e243f7578762fea58931f21a523aba8705e05af04
6
+ metadata.gz: f4483bded8417061d3552c03c4a13422e280c7c71ecb3e37e346c29d0b910205794bb5e84ff5c3ccfb0daf27f399ac3cf669f1d508608338c1ac6029efe32549
7
+ data.tar.gz: 891b15d02dee4a0bf11d76963f887db4daca5840653aa7d89eaa47a6356fd14737bb25f613af5e7695c54ead3382c328837618b1ffd6fbee1fa4d7f4a7625c67
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,21 @@
1
+ === 5.22.1 / 2024-02-06
2
+
3
+ * 1 bug fix:
4
+
5
+ * Don't exit non-zero if no tests ran and no filter (aka, the test file is empty).
6
+ (I'm starting to think the exit 1 thing for @tenderlove was a mistake...)
7
+
8
+ === 5.22.0 / 2024-02-05
9
+
10
+ * 1 minor enhancement:
11
+
12
+ * Added "did you mean" output if your --name filter matches nothing. (tenderlove)
13
+
14
+ * 2 bug fixes:
15
+
16
+ * Big cleanup of test filtering. Much prettier / more functional.
17
+ * Fix situation where Assertion#location can't find the location. (pftg)
18
+
1
19
  === 5.21.2 / 2024-01-17
2
20
 
3
21
  * 1 bug fix:
data/lib/minitest.rb CHANGED
@@ -9,7 +9,7 @@ require_relative "minitest/compress"
9
9
  # :include: README.rdoc
10
10
 
11
11
  module Minitest
12
- VERSION = "5.21.2" # :nodoc:
12
+ VERSION = "5.22.1" # :nodoc:
13
13
 
14
14
  @@installed_at_exit ||= false
15
15
  @@after_run = []
@@ -134,7 +134,7 @@ module Minitest
134
134
  # Minitest.run(args)
135
135
  # Minitest.__run(reporter, options)
136
136
  # Runnable.runnables.each
137
- # runnable.run(reporter, options)
137
+ # runnable_klass.run(reporter, options)
138
138
  # self.runnable_methods.each
139
139
  # self.run_one_method(self, runnable_method, reporter)
140
140
  # Minitest.run_one_method(klass, runnable_method)
@@ -164,11 +164,34 @@ module Minitest
164
164
  warn "Interrupted. Exiting..."
165
165
  end
166
166
  self.parallel_executor.shutdown
167
+
168
+ # might have been removed/replaced during init_plugins:
169
+ summary = reporter.reporters.grep(SummaryReporter).first
170
+ return empty_run! options if summary && summary.count == 0
171
+
167
172
  reporter.report
168
173
 
169
174
  reporter.passed?
170
175
  end
171
176
 
177
+ def self.empty_run! options # :nodoc:
178
+ filter = options[:filter]
179
+ return true unless filter # no filter, but nothing ran == success
180
+
181
+ warn "Nothing ran for filter: %s" % [filter]
182
+
183
+ require "did_you_mean" # soft dependency, punt if it doesn't load
184
+
185
+ ms = Runnable.runnables.flat_map(&:runnable_methods)
186
+ cs = DidYouMean::SpellChecker.new(dictionary: ms).correct filter
187
+
188
+ warn DidYouMean::Formatter.message_for cs unless cs.empty?
189
+ rescue LoadError
190
+ # do nothing
191
+ ensure
192
+ return false
193
+ end
194
+
172
195
  ##
173
196
  # Internal run method. Responsible for telling all Runnable
174
197
  # sub-classes to run.
@@ -338,25 +361,15 @@ module Minitest
338
361
  # reporter to record.
339
362
 
340
363
  def self.run reporter, options = {}
341
- filtered_methods = if options[:filter]
342
- filter = options[:filter]
343
- filter = Regexp.new $1 if filter.is_a?(String) && filter =~ %r%/(.*)/%
344
-
345
- self.runnable_methods.find_all { |m|
346
- filter === m || filter === "#{self}##{m}"
347
- }
348
- else
349
- self.runnable_methods
350
- end
364
+ pos = options[:filter]
365
+ neg = options[:exclude]
351
366
 
352
- if options[:exclude]
353
- exclude = options[:exclude]
354
- exclude = Regexp.new $1 if exclude =~ %r%/(.*)/%
367
+ pos = Regexp.new $1 if pos.is_a?(String) && pos =~ %r%/(.*)/%
368
+ neg = Regexp.new $1 if neg.is_a?(String) && neg =~ %r%/(.*)/%
355
369
 
356
- filtered_methods.delete_if { |m|
357
- exclude === m || exclude === "#{self}##{m}"
358
- }
359
- end
370
+ filtered_methods = self.runnable_methods
371
+ .select { |m| !pos || pos === m || pos === "#{self}##{m}" }
372
+ .reject { |m| neg && (neg === m || neg === "#{self}##{m}") }
360
373
 
361
374
  return if filtered_methods.empty?
362
375
 
@@ -961,8 +974,9 @@ module Minitest
961
974
  def location
962
975
  bt = Minitest.filter_backtrace self.backtrace
963
976
  idx = bt.rindex { |s| s.match? RE } || -1 # fall back to first item
977
+ loc = bt[idx+1] || bt.last || "unknown:-1"
964
978
 
965
- bt[idx+1].sub(/:in .*$/, "")
979
+ loc.sub(/:in .*$/, "")
966
980
  end
967
981
 
968
982
  def result_code # :nodoc:
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.21.2
4
+ version: 5.22.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -29,7 +29,7 @@ cert_chain:
29
29
  S7043fq9EbQdBr2AXdj92+CDwuTfHI6/Hj5FVBDULufrJaan4xUgL70Hvc6pTTeW
30
30
  deKfBjgVAq7EYHu1AczzlUly
31
31
  -----END CERTIFICATE-----
32
- date: 2024-01-18 00:00:00.000000000 Z
32
+ date: 2024-02-07 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdoc
metadata.gz.sig CHANGED
Binary file