class RunItBack

Public Instance Methods

dump_summary(summary) click to toggle source
# File lib/run_it_back.rb, line 6
def dump_summary(summary)
  failed_files = summary.failed_examples.map { |e| RSpec::Core::Metadata::relative_path(e.file_path) }.uniq

  return if summary.failed_examples.empty?

  if summary.failed_examples.length.between?(2, 10)
    output.puts
    output.puts 'Rerun all failed examples:'
    output.puts
    output.puts failure_colored("rspec #{failed_example_output(summary.failed_examples)}")
  elsif failed_files.count <= 10
    output.puts
    output.puts 'Rerun all files containing failures:'
    output.puts

    output.puts failure_colored("rspec #{failed_files.join(' ')}")
  end
end

Private Instance Methods

failed_example_output(failed_examples) click to toggle source
# File lib/run_it_back.rb, line 27
def failed_example_output(failed_examples)
  line_number_hash = Hash.new { |h, k| h[k] = [] }
  failed_examples.each do |example|
    line_number_hash[example.metadata.fetch(:file_path)] << example.metadata.fetch(:line_number)
  end

  line_number_hash.map do |file_path, line_numbers|
    line_numbers = line_numbers.uniq
    if line_numbers.count > 1
      "#{file_path}:{#{line_numbers.join(',')}}"
    else
      "#{file_path}:#{line_numbers.first}"
    end
  end.join(' ')
end
failure_colored(str) click to toggle source
# File lib/run_it_back.rb, line 43
def failure_colored(str)
  RSpec::Core::Formatters::ConsoleCodes.wrap(str, :failure)
end