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