class MinitestBender::Results::Base

Constants

NAME_PREFIX

Attributes

execution_order[R]
minitest_result[R]
state[R]

Public Class Methods

new(minitest_result) click to toggle source
# File lib/minitest-bender/results/base.rb, line 15
def initialize(minitest_result)
  @minitest_result = minitest_result
  @state = MinitestBender.states.fetch(minitest_result.result_code)
  @execution_order = state.add_result(self).size
end

Public Instance Methods

context() click to toggle source
# File lib/minitest-bender/results/base.rb, line 21
def context
  @context ||= ResultContext.new(adjusted_class_name)
end
file_path() click to toggle source
# File lib/minitest-bender/results/base.rb, line 74
def file_path
  @file_path ||= source_location[0]
end
formatted_label() click to toggle source
# File lib/minitest-bender/results/base.rb, line 42
def formatted_label
  state.formatted_label
end
formatted_label_and_time() click to toggle source
# File lib/minitest-bender/results/base.rb, line 66
def formatted_label_and_time
  "#{formatted_label} #{formatted_time}"
end
formatted_message() click to toggle source
# File lib/minitest-bender/results/base.rb, line 70
def formatted_message
  state.formatted_message(self)
end
formatted_name_with_context() click to toggle source
# File lib/minitest-bender/results/base.rb, line 33
def formatted_name_with_context
  "#{Colorizer.colorize(context, :normal)} #{name_prefix} #{Colorizer.colorize(name, :normal, :bold)}"
end
formatted_time() click to toggle source
# File lib/minitest-bender/results/base.rb, line 62
def formatted_time
  Colorizer.colorize(time_with_unit_and_padding_right.rjust(6), :time)
end
name_sort_key() click to toggle source
# File lib/minitest-bender/results/base.rb, line 29
def name_sort_key
  name
end
rerun_line(padding) click to toggle source
# File lib/minitest-bender/results/base.rb, line 37
def rerun_line(padding)
  unformatted = "Rerun: #{rerun_command}"
  "#{padding}#{Colorizer.colorize(unformatted, :tests)}"
end
source_line_number() click to toggle source
# File lib/minitest-bender/results/base.rb, line 78
def source_line_number
  @source_line_number ||= source_location[1]
end
source_location() click to toggle source

credit where credit is due: minitest-line

# File lib/minitest-bender/results/base.rb, line 83
def source_location
  if minitest_at_least_5_11?
    minitest_result.source_location
  else
    minitest_result.method(minitest_result.name).source_location rescue ['unknown', -1]
  end
end
time_with_unit_and_padding_right() click to toggle source
# File lib/minitest-bender/results/base.rb, line 46
def time_with_unit_and_padding_right
  time_in_s = time
  case time_in_s
  when 0...1
    sprintf('%.0fms ', time_in_s * 1000)
  when 1...10
    sprintf('%.2fs ', time_in_s)
  when 10...100
    sprintf('%.1fs ', time_in_s)
  when 100...10000
    sprintf('%.0fs ', time_in_s)
  else
    sprintf('%.0fs', time_in_s)
  end
end
to_icon() click to toggle source
# File lib/minitest-bender/results/base.rb, line 25
def to_icon
  state.colored_icon
end

Private Instance Methods

adjusted_class_name() click to toggle source
# File lib/minitest-bender/results/base.rb, line 95
def adjusted_class_name
  class_name
end
class_name() click to toggle source
# File lib/minitest-bender/results/base.rb, line 99
def class_name
  if minitest_at_least_5_11?
    minitest_result.klass
  else
    minitest_result.class.name
  end
end
class_separator() click to toggle source
# File lib/minitest-bender/results/base.rb, line 111
def class_separator
  CLASS_SEPARATOR
end
minitest_at_least_5_11?() click to toggle source
# File lib/minitest-bender/results/base.rb, line 107
def minitest_at_least_5_11?
  @minitest_at_least_5_11 ||= Gem.loaded_specs['minitest'].version >= Gem::Version.new('5.11')
end
name_prefix() click to toggle source
# File lib/minitest-bender/results/base.rb, line 115
def name_prefix
  NAME_PREFIX
end
rerun_command() click to toggle source
# File lib/minitest-bender/results/base.rb, line 119
def rerun_command
  return unless (relative_location = state.test_location(self))

  relative_location = relative_location.split(':').first

  stem = Minitest::Bender.configuration.rerun_command_stem

  if stem.include?('rake')
    "#{stem} TEST=#{relative_location} TESTOPTS=\"--name=#{name_for_rerun_command}\""
  else
    "#{stem} #{relative_location} --name=#{name_for_rerun_command}"
  end
end