class Minitest::TestProfile::Reporter

Attributes

test_results[R]

Public Class Methods

new(io = $stdout, options = {}) click to toggle source
Calls superclass method
# File lib/minitest/test_profile/reporter.rb, line 6
def initialize(io = $stdout, options = {})
  super(io, options)
  @test_results = []
  @count = options[:count]
  @calculated_total_time = nil
end

Public Instance Methods

aggregate_slow_tests!() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 36
def aggregate_slow_tests!
  @test_results.sort! { |a, b|  b.time <=> a.time }
  @test_results = @test_results.take(count)
end
calculate_total_time() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 32
def calculate_total_time
  @calculated_total_time ||= @test_results.inject(0) { |sum, slow_test| sum + slow_test.time }
end
count() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 50
def count
  @count || Minitest::TestProfile.count
end
display_aggregated_results() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 23
def display_aggregated_results
  calculate_total_time
  aggregate_slow_tests!
  io.puts "\nTop %d slowest tests (%.6f seconds, %.1f%% of total time):\n" % [@test_results.size, slow_tests_total_time, ratio]
  @test_results.each do |test_result|
    io.puts "%s\n  %.2f seconds\n" % [test_result.location, test_result.time]
  end
end
ratio() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 45
def ratio
  return 0.0 if @calculated_total_time == 0
  (slow_tests_total_time / @calculated_total_time) * 100
end
record(result) click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 18
def record(result)
  return unless Minitest::TestProfile.use?
  @test_results << result
end
report() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 13
def report
  return unless Minitest::TestProfile.use?
  display_aggregated_results
end
slow_tests_total_time() click to toggle source
# File lib/minitest/test_profile/reporter.rb, line 41
def slow_tests_total_time
  @slow_tests_total_time ||= @test_results.inject(0) { |sum, slow_test| sum + slow_test.time }
end