Skip to content

Commit

Permalink
Merge pull request #31901 from Kevinrob/patch-1
Browse files Browse the repository at this point in the history
Use SuppressedSummaryReporter and Rails::TestUnitReporter only if needed
  • Loading branch information
rafaelfranca committed Feb 17, 2018
2 parents 65b370f + 40a5ba3 commit 7340596
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 4 deletions.
2 changes: 1 addition & 1 deletion railties/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

* Fix minitest rails plugin. The custom reporters are added only if needed. This will fix conflicts with others plugins. *Kevin Robatel*

Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/railties/CHANGELOG.md) for previous changes.
15 changes: 12 additions & 3 deletions railties/lib/minitest/rails_plugin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,19 @@ def self.plugin_rails_init(options)
Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
end

self.plugin_rails_replace_reporters(reporter, options)
end

def self.plugin_rails_replace_reporters(minitest_reporter, options)
return unless minitest_reporter.kind_of?(Minitest::CompositeReporter)

# Replace progress reporter for colors.
reporter.reporters.delete_if { |reporter| reporter.kind_of?(SummaryReporter) || reporter.kind_of?(ProgressReporter) }
reporter << SuppressedSummaryReporter.new(options[:io], options)
reporter << ::Rails::TestUnitReporter.new(options[:io], options)
if minitest_reporter.reporters.reject! { |reporter| reporter.kind_of?(SummaryReporter) } != nil
minitest_reporter << SuppressedSummaryReporter.new(options[:io], options)
end
if minitest_reporter.reporters.reject! { |reporter| reporter.kind_of?(ProgressReporter) } != nil
minitest_reporter << ::Rails::TestUnitReporter.new(options[:io], options)
end
end

# Backwardscompatibility with Rails 5.0 generated plugin test scripts
Expand Down
38 changes: 38 additions & 0 deletions railties/test/minitest/rails_plugin_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# frozen_string_literal: true

require "abstract_unit"

class Minitest::RailsPluginTest < ActiveSupport::TestCase
setup do
@options = Minitest.process_args []
@output = StringIO.new("".encode("UTF-8"))
end

test "default reporters are replaced" do
reporter = Minitest::CompositeReporter.new
reporter << Minitest::SummaryReporter.new(@output, @options)
reporter << Minitest::ProgressReporter.new(@output, @options)
reporter << Minitest::Reporter.new(@output, @options)

Minitest::plugin_rails_replace_reporters(reporter, {})

assert_equal 3, reporter.reporters.count
assert reporter.reporters.any? { |candidate| candidate.kind_of?(Minitest::SuppressedSummaryReporter) }
assert reporter.reporters.any? { |candidate| candidate.kind_of?(::Rails::TestUnitReporter) }
assert reporter.reporters.any? { |candidate| candidate.kind_of?(Minitest::Reporter) }
end

test "no custom reporters are added if nothing to replace" do
reporter = Minitest::CompositeReporter.new

Minitest::plugin_rails_replace_reporters(reporter, {})

assert_equal 0, reporter.reporters.count
end

test "handle the case when reporter is not CompositeReporter" do
reporter = Minitest::Reporter.new

Minitest::plugin_rails_replace_reporters(reporter, {})
end
end

0 comments on commit 7340596

Please sign in to comment.