diff --git a/Gemfile.lock b/Gemfile.lock
index 4e4665d9f..e37abaa5f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -118,7 +118,7 @@ GEM
uri (>= 0.13.1)
addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
- ansi (1.5.0)
+ ansi (1.6.0)
ar_transaction_changes (1.1.11)
activerecord (>= 7.0.0)
ast (2.4.3)
@@ -216,16 +216,16 @@ GEM
net-smtp
marcel (1.1.0)
mini_mime (1.1.5)
- minitest (6.0.2)
+ minitest (6.0.3)
drb (~> 2.0)
prism (~> 1.5)
minitest-hooks (1.5.3)
minitest (> 5.3)
minitest-mock (5.27.0)
- minitest-reporters (1.7.1)
+ minitest-reporters (1.8.0)
ansi
builder
- minitest (>= 5.0)
+ minitest (>= 5.0, < 7)
ruby-progressbar
mutex_m (0.3.0)
net-http (0.9.1)
diff --git a/sorbet/rbi/gems/ansi@1.5.0.rbi b/sorbet/rbi/gems/ansi@1.6.0.rbi
similarity index 100%
rename from sorbet/rbi/gems/ansi@1.5.0.rbi
rename to sorbet/rbi/gems/ansi@1.6.0.rbi
diff --git a/sorbet/rbi/gems/minitest-reporters@1.7.1.rbi b/sorbet/rbi/gems/minitest-reporters@1.8.0.rbi
similarity index 93%
rename from sorbet/rbi/gems/minitest-reporters@1.7.1.rbi
rename to sorbet/rbi/gems/minitest-reporters@1.8.0.rbi
index be17e286a..c8c0a1e1a 100644
--- a/sorbet/rbi/gems/minitest-reporters@1.7.1.rbi
+++ b/sorbet/rbi/gems/minitest-reporters@1.8.0.rbi
@@ -8,7 +8,12 @@
# delegate to default reporter
#
# pkg:gem/minitest-reporters#lib/minitest/reporters.rb:3
-module Minitest; end
+module Minitest
+ class << self
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:79
+ def plugin_minitest_reporter_init(options); end
+ end
+end
# Filters backtraces of exceptions that may arise when running tests.
#
@@ -92,34 +97,37 @@ Minitest::RelativePosition::TEST_PADDING = T.let(T.unsafe(nil), Integer)
# pkg:gem/minitest-reporters#lib/minitest/relative_position.rb:4
Minitest::RelativePosition::TEST_SIZE = T.let(T.unsafe(nil), Integer)
-# pkg:gem/minitest-reporters#lib/minitest/reporters.rb:7
+# pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:2
module Minitest::Reporters
class << self
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:61
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:68
def choose_reporters(console_reporters, env); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:73
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:80
def clock_time; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:81
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:88
def minitest_version; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:22
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:42
+ def register_minitest_plugin!; end
+
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:24
def reporters; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:22
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:24
def reporters=(_arg0); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:25
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:27
def use!(console_reporters = T.unsafe(nil), env = T.unsafe(nil), backtrace_filter = T.unsafe(nil)); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:43
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:50
def use_around_test_hooks!; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:85
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:92
def use_old_activesupport_fix!; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:39
+ # pkg:gem/minitest-reporters#lib/minitest/reporters.rb:46
def use_runner!(console_reporters, env); end
end
end
@@ -304,6 +312,46 @@ class Minitest::Reporters::DefaultReporter < ::Minitest::Reporters::BaseReporter
def yellow(string); end
end
+# pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:3
+class Minitest::Reporters::DelegateReporter < ::Minitest::AbstractReporter
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:4
+ def initialize(reporters, options = T.unsafe(nil)); end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:10
+ def io; end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:35
+ def passed?; end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:19
+ def prerecord(klass, name); end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:25
+ def record(result); end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:31
+ def report; end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:15
+ def start; end
+
+ private
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:54
+ def all_reporters; end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:68
+ def guard_reporter(reporters); end
+
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:58
+ def init_all_reporters; end
+
+ # stolen from minitest self.run
+ #
+ # pkg:gem/minitest-reporters#lib/minitest/minitest_reporter_plugin.rb:42
+ def total_count(options); end
+end
+
# A reporter for generating HTML test reports
# This is recommended to be used with a CI server, where the report is kept as an artifact and is accessible via
# a shared link
@@ -787,7 +835,7 @@ class Minitest::Reporters::ProgressReporter < ::Minitest::Reporters::BaseReporte
# pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:49
def record(test); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:70
+ # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:73
def report; end
# pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:32
@@ -795,16 +843,16 @@ class Minitest::Reporters::ProgressReporter < ::Minitest::Reporters::BaseReporte
private
- # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:93
+ # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:96
def color; end
- # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:97
+ # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:100
def color=(color); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:89
+ # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:92
def print_test_with_time(test); end
- # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:85
+ # pkg:gem/minitest-reporters#lib/minitest/reporters/progress_reporter.rb:88
def show; end
end
diff --git a/sorbet/rbi/gems/minitest@6.0.2.rbi b/sorbet/rbi/gems/minitest@6.0.3.rbi
similarity index 97%
rename from sorbet/rbi/gems/minitest@6.0.2.rbi
rename to sorbet/rbi/gems/minitest@6.0.3.rbi
index e5a30aa32..32dbf4e78 100644
--- a/sorbet/rbi/gems/minitest@6.0.2.rbi
+++ b/sorbet/rbi/gems/minitest@6.0.3.rbi
@@ -412,12 +412,12 @@ module Minitest::Assertions
#
# See also: #assert_output
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:459
+ # pkg:gem/minitest#lib/minitest/assertions.rb:462
def assert_silent; end
# Fails unless the block throws +sym+
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:468
+ # pkg:gem/minitest#lib/minitest/assertions.rb:471
def assert_throws(sym, msg = T.unsafe(nil)); end
# Captures $stdout and $stderr into strings:
@@ -434,7 +434,7 @@ module Minitest::Assertions
# capture IO for subprocesses. Use #capture_subprocess_io for
# that.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:504
+ # pkg:gem/minitest#lib/minitest/assertions.rb:507
def capture_io; end
# Captures $stdout and $stderr into strings, using Tempfile to
@@ -451,7 +451,7 @@ module Minitest::Assertions
# NOTE: This method is approximately 10x slower than #capture_io so
# only use it when you need to test the output of a subprocess.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:537
+ # pkg:gem/minitest#lib/minitest/assertions.rb:540
def capture_subprocess_io; end
# Returns a diff between +exp+ and +act+. If there is no known
@@ -466,19 +466,19 @@ module Minitest::Assertions
# Returns details for exception +e+
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:569
+ # pkg:gem/minitest#lib/minitest/assertions.rb:572
def exception_details(e, msg); end
# Fails after a given date (in the local time zone). This allows
# you to put time-bombs in your tests if you need to keep
# something around until a later date lest you forget about it.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:585
+ # pkg:gem/minitest#lib/minitest/assertions.rb:588
def fail_after(y, m, d, msg); end
# Fails with +msg+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:592
+ # pkg:gem/minitest#lib/minitest/assertions.rb:595
def flunk(msg = T.unsafe(nil)); end
# Returns a proc that delays generation of an output message. If
@@ -486,7 +486,7 @@ module Minitest::Assertions
# as-is. Otherwise, return a proc that will output +msg+ along
# with the value of the result of the block passed to +message+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:603
+ # pkg:gem/minitest#lib/minitest/assertions.rb:606
def message(msg = T.unsafe(nil), ending = T.unsafe(nil), &default); end
# This returns a human-readable version of +obj+. By default
@@ -508,62 +508,62 @@ module Minitest::Assertions
# used for counting assertions
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:614
+ # pkg:gem/minitest#lib/minitest/assertions.rb:617
def pass(_msg = T.unsafe(nil)); end
# Fails if +test+ is truthy.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:621
+ # pkg:gem/minitest#lib/minitest/assertions.rb:624
def refute(test, msg = T.unsafe(nil)); end
# Fails if +obj+ is empty.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:629
+ # pkg:gem/minitest#lib/minitest/assertions.rb:632
def refute_empty(obj, msg = T.unsafe(nil)); end
# Fails if exp == act.
#
# For floats use refute_in_delta.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:639
+ # pkg:gem/minitest#lib/minitest/assertions.rb:642
def refute_equal(exp, act, msg = T.unsafe(nil)); end
# For comparing Floats. Fails if +exp+ is within +delta+ of +act+.
#
# refute_in_delta Math::PI, (22.0 / 7.0)
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:651
+ # pkg:gem/minitest#lib/minitest/assertions.rb:654
def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end
# For comparing Floats. Fails if +exp+ and +act+ have a relative error
# less than +epsilon+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:663
+ # pkg:gem/minitest#lib/minitest/assertions.rb:666
def refute_in_epsilon(exp, act, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end
# Fails if +obj+ includes +sub+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:670
+ # pkg:gem/minitest#lib/minitest/assertions.rb:673
def refute_includes(obj, sub, msg = T.unsafe(nil)); end
# Fails if +obj+ is an instance of +cls+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:678
+ # pkg:gem/minitest#lib/minitest/assertions.rb:681
def refute_instance_of(cls, obj, msg = T.unsafe(nil)); end
# Fails if +obj+ is a kind of +cls+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:688
+ # pkg:gem/minitest#lib/minitest/assertions.rb:691
def refute_kind_of(cls, obj, msg = T.unsafe(nil)); end
# Fails if +matcher+ =~ +obj+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:696
+ # pkg:gem/minitest#lib/minitest/assertions.rb:699
def refute_match(matcher, obj, msg = T.unsafe(nil)); end
# Fails if +obj+ is nil.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:705
+ # pkg:gem/minitest#lib/minitest/assertions.rb:708
def refute_nil(obj, msg = T.unsafe(nil)); end
# Fails if +o1+ is not +op+ +o2+. Eg:
@@ -571,12 +571,12 @@ module Minitest::Assertions
# refute_operator 1, :>, 2 #=> pass
# refute_operator 1, :<, 2 #=> fail
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:737
+ # pkg:gem/minitest#lib/minitest/assertions.rb:740
def refute_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end
# Fails if +path+ exists.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:747
+ # pkg:gem/minitest#lib/minitest/assertions.rb:750
def refute_path_exists(path, msg = T.unsafe(nil)); end
# For testing with pattern matching (only supported with Ruby 3.0 and later)
@@ -590,7 +590,7 @@ module Minitest::Assertions
# This assertion expects a NoMatchingPatternError exception, and will fail if none is raised. Any
# other exceptions will be raised as normal and generate a test error.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:722
+ # pkg:gem/minitest#lib/minitest/assertions.rb:725
def refute_pattern; end
# For testing with predicates.
@@ -601,25 +601,25 @@ module Minitest::Assertions
#
# str.wont_be :empty?
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:761
+ # pkg:gem/minitest#lib/minitest/assertions.rb:764
def refute_predicate(o1, op, msg = T.unsafe(nil)); end
# Fails if +obj+ responds to the message +meth+.
# include_all defaults to false to match Object#respond_to?
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:771
+ # pkg:gem/minitest#lib/minitest/assertions.rb:774
def refute_respond_to(obj, meth, msg = T.unsafe(nil), include_all: T.unsafe(nil)); end
# Fails if +exp+ is the same (by object identity) as +act+.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:780
+ # pkg:gem/minitest#lib/minitest/assertions.rb:783
def refute_same(exp, act, msg = T.unsafe(nil)); end
# Skips the current run. If run in verbose-mode, the skipped run
# gets listed at the end of the run but doesn't cause a failure
# exit code.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:793
+ # pkg:gem/minitest#lib/minitest/assertions.rb:796
def skip(msg = T.unsafe(nil), _ignored = T.unsafe(nil)); end
# Skips the current run until a given date (in the local time
@@ -627,12 +627,12 @@ module Minitest::Assertions
# date, but still holds you accountable and prevents you from
# forgetting it.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:805
+ # pkg:gem/minitest#lib/minitest/assertions.rb:808
def skip_until(y, m, d, msg); end
# Was this testcase skipped? Meant for #teardown.
#
- # pkg:gem/minitest#lib/minitest/assertions.rb:814
+ # pkg:gem/minitest#lib/minitest/assertions.rb:817
def skipped?; end
# Returns things to diff [expect, butwas], or [nil, nil] if nothing to diff.
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 713d714f5..6efeaf7ee 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -5,6 +5,8 @@
require "minitest/autorun"
require "minitest/spec"
require "minitest/hooks/default"
+require "minitest/reporters"
+require "minitest/mock"
require "rails/test_unit/line_filtering"
require "tapioca/helpers/test/content"
@@ -17,12 +19,6 @@
require "minitest/reporters"
require "spec_reporter"
-# Minitest::Reporters currently lacks support for Minitest 6 out of the box
-# but we can register the plugin to use it.
-# Ref: https://github.com/minitest-reporters/minitest-reporters/pull/366#issuecomment-3731951673
-require "minitest/minitest_reporter_plugin"
-Minitest.register_plugin(:minitest_reporter)
-
backtrace_filter = Minitest::ExtensibleBacktraceFilter.default_filter
backtrace_filter.add_filter(%r{gems/sorbet-runtime})
backtrace_filter.add_filter(%r{gems/railties})
@@ -30,8 +26,6 @@
Minitest::Reporters.use!(SpecReporter.new(color: true), ENV, backtrace_filter)
-require "minitest/mock"
-
module Minitest
class Test
extend Rails::LineFiltering