class RSpec::LongTimeSpecsProfiler

Constants

VERSION

Public Instance Methods

dump_profile() click to toggle source

Override RSpec::Core::Formatters::BaseTextFormatter#dump_profile

# File lib/rspec/long_time_specs_profiler.rb, line 9
def dump_profile
  dump_profile_long_time_spec_files
end

Private Instance Methods

dump_profile_long_time_spec_files() click to toggle source
# File lib/rspec/long_time_specs_profiler.rb, line 15
def dump_profile_long_time_spec_files
  number_of_examples = RSpec.configuration.profile_examples
  examples_group_by_location = examples.group_by do |example|
    example.example_group.parent_groups.last.metadata[:example_group][:location]
  end

  return if examples_group_by_location.length <= 1

  stats = examples_group_by_location.map { |location, examples| Stat.new(location, examples) }
  sorted_stats = stats.sort_by(&:total_time).reverse

  output.puts "\nTop #{number_of_examples} longest time spec files:"
  sorted_stats.first(number_of_examples).each do |stat|
    total = "#{failure_color(format_seconds(stat.total_time))} #{failure_color("seconds")}"
    count = pluralize(stat.count, "example")
    output.puts "  #{stat.description}"
    output.puts detail_color("    #{total} ( #{count} ) #{stat.location}")
  end
end