module Luna::Formatters::Profiling

Constants

EXP
EXP_HEADER
GROUPS
GROUPS_HEADER

Public Instance Methods

dump_profile(profile) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 19
def dump_profile(profile)
  slowest_examples(profile)
  slowest_example_groups(
    profile
  )
end
helpers() click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 15
def helpers
  RSpec::Core::Formatters::Helpers
end

Private Instance Methods

color_blue(str) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 93
def color_blue(str)
  RSpec::Core::Formatters::ConsoleCodes.wrap(
    str, :cyan
  )
end
examples_header(profile) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 80
def examples_header(profile)
  @output.puts(
    format(EXP_HEADER, {
      count: profile.slowest_examples.size,
      percent: profile.percentage,
      sec: helpers.format_seconds(
        profile.slow_duration
      )
    })
  )
end
format_caller(caller_info) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 107
def format_caller(caller_info)
  color_blue strip_relative(
    ::RSpec.configuration.backtrace_formatter.backtrace_line(
      caller_info.to_s.split(":in `block'").first
    )
  )
end
groups_header(profile) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 71
def groups_header(profile)
  @output.puts(
    format(GROUPS_HEADER, {
      count: profile.slowest_groups.size
    })
  )
end
slowest_example_groups(profile) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 48
def slowest_example_groups(profile)
  groups_header(profile)

  profile.slowest_groups.each do |l, h|
    sec = helpers.format_seconds(
      h[:total_time]
    )

    sec = sec + ' seconds'
    @output.puts color_blue(
      format(GROUPS, {
        desc: h[:description],
        sec: sec.to_f < 2 ? success_color(sec) : failure_color(sec),
        count: h[:count],
        loc: color_blue(
          strip_relative(l)
        )
      })
    )
  end
end
slowest_examples(profile) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 27
def slowest_examples(profile)
  examples_header(profile)

  profile.slowest_examples.map do |example|
    r_time = example.execution_result.run_time
    sec = helpers.format_seconds(
      r_time
    )

    sec = sec + ' seconds'
    @output.puts(
      format(EXP, {
        loc: format_caller(example.location),
        sec: sec.to_f < 1 ? success_color(sec) : failure_color(sec),
        dsc: example.full_description
      })
    )
  end
end
strip_relative(path) click to toggle source
# File lib/luna/rspec/formatters/extras/profiling.rb, line 100
def strip_relative(path)
  path.gsub(
    %r!\A\./!, ''
  )
end