class RuboCop::RSpec::ParallelFormatter

RSpec formatter for use with running ‘rake spec` in parallel. This formatter removes much of the noise from RSpec so that only the important information will be surfaced by test-queue. It also adds metadata to the output in order to more easily find the text needed for outputting after the parallel run completes.

Public Instance Methods

dump_failures(notification) click to toggle source

The BEGIN/END comments are used by ‘spec_runner.rake` to determine what output goes where in the final parallelized output, and should not be removed!

# File lib/rubocop/rspec/parallel_formatter.rb, line 22
def dump_failures(notification)
  return if notification.failure_notifications.empty?

  output.puts '# FAILURES BEGIN'
  notification.failure_notifications.each do |failure|
    output.puts failure.fully_formatted('*', colorizer)
  end
  output.puts
  output.puts '# FAILURES END'
end
dump_pending(*) click to toggle source

Don’t show pending tests

# File lib/rubocop/rspec/parallel_formatter.rb, line 17
def dump_pending(*); end
dump_summary(summary) click to toggle source
# File lib/rubocop/rspec/parallel_formatter.rb, line 33
def dump_summary(summary)
  output_summary(summary)
  output_rerun_commands(summary)
end

Private Instance Methods

colorize_summary(summary) click to toggle source
# File lib/rubocop/rspec/parallel_formatter.rb, line 53
def colorize_summary(summary)
  totals = totals(summary)

  if summary.failure_count.positive? || summary.errors_outside_of_examples_count.positive?
    colorizer.wrap(totals, ::RSpec.configuration.failure_color)
  else
    colorizer.wrap(totals, ::RSpec.configuration.success_color)
  end
end
colorizer() click to toggle source
# File lib/rubocop/rspec/parallel_formatter.rb, line 40
def colorizer
  @colorizer ||= ::RSpec::Core::Formatters::ConsoleCodes
end
output_rerun_commands(summary) click to toggle source

The BEGIN/END comments are used by ‘spec_runner.rake` to determine what output goes where in the final parallelized output, and should not be removed!

# File lib/rubocop/rspec/parallel_formatter.rb, line 66
def output_rerun_commands(summary)
  output.puts '# RERUN BEGIN'
  output.puts summary.colorized_rerun_commands.lines[3..].join
  output.puts '# RERUN END'
end
output_summary(summary) click to toggle source

The BEGIN/END comments are used by ‘spec_runner.rake` to determine what output goes where in the final parallelized output, and should not be removed!

# File lib/rubocop/rspec/parallel_formatter.rb, line 47
def output_summary(summary)
  output.puts '# SUMMARY BEGIN'
  output.puts colorize_summary(summary)
  output.puts '# SUMMARY END'
end
pluralize(*args) click to toggle source
# File lib/rubocop/rspec/parallel_formatter.rb, line 85
def pluralize(*args)
  ::RSpec::Core::Formatters::Helpers.pluralize(*args)
end
totals(summary) click to toggle source
# File lib/rubocop/rspec/parallel_formatter.rb, line 72
def totals(summary)
  output = pluralize(summary.example_count, 'example')
  output += ", #{summary.pending_count} pending" if summary.pending_count.positive?
  output += ", #{pluralize(summary.failure_count, 'failure')}"

  if summary.errors_outside_of_examples_count.positive?
    error_count = pluralize(summary.errors_outside_of_examples_count, 'error')
    output += ", #{error_count} occurred outside of examples"
  end

  output
end