class MinitestBender::Configuration

Constants

DEFAULT_CONFIG

Attributes

client_config[R]
options_config[R]

Public Class Methods

new() click to toggle source
# File lib/minitest-bender/configuration.rb, line 15
def initialize
  @client_config = {}
  @options_config = {}
end

Public Instance Methods

add_client_config(config) click to toggle source
# File lib/minitest-bender/configuration.rb, line 20
def add_client_config(config)
  validate_config(config)
  client_config.merge!(config)
end
backtrace_view() click to toggle source
# File lib/minitest-bender/configuration.rb, line 82
def backtrace_view
  final_config.fetch(:backtrace_view)
end
backtrace_view=(backtrace_view) click to toggle source
# File lib/minitest-bender/configuration.rb, line 49
def backtrace_view=(backtrace_view)
  options_config[:backtrace_view] = backtrace_view
end
cooperative?() click to toggle source
# File lib/minitest-bender/configuration.rb, line 62
def cooperative?
  final_config.fetch(:mode) == :cooperative
end
custom_colors() click to toggle source
# File lib/minitest-bender/configuration.rb, line 90
def custom_colors
  final_config.fetch(:custom_colors)
end
mode=(mode) click to toggle source
# File lib/minitest-bender/configuration.rb, line 25
def mode=(mode)
  options_config[:mode] = mode
end
overview_sort_key() click to toggle source
# File lib/minitest-bender/configuration.rb, line 74
def overview_sort_key
  final_config.fetch(:overview_sort_key)
end
overview_sort_key=(overview_sort_key) click to toggle source
# File lib/minitest-bender/configuration.rb, line 41
def overview_sort_key=(overview_sort_key)
  options_config[:overview_sort_key] = overview_sort_key
end
recorder() click to toggle source
# File lib/minitest-bender/configuration.rb, line 66
def recorder
  final_config.fetch(:recorder)
end
recorder=(recorder) click to toggle source
# File lib/minitest-bender/configuration.rb, line 29
def recorder=(recorder)
  options_config[:recorder] = recorder
end
rerun_command_stem() click to toggle source
# File lib/minitest-bender/configuration.rb, line 86
def rerun_command_stem
  final_config.fetch(:rerun_command_stem)
end
rerun_command_stem=(rerun_command_stem) click to toggle source
# File lib/minitest-bender/configuration.rb, line 53
def rerun_command_stem=(rerun_command_stem)
  options_config[:rerun_command_stem] = rerun_command_stem
end
sections() click to toggle source
# File lib/minitest-bender/configuration.rb, line 70
def sections
  sections_whitelist - sections_blacklist
end
sections=(sections) click to toggle source
# File lib/minitest-bender/configuration.rb, line 33
def sections=(sections)
  options_config[:sections] = sections
end
sections_blacklist=(sections_blacklist) click to toggle source
# File lib/minitest-bender/configuration.rb, line 37
def sections_blacklist=(sections_blacklist)
  options_config[:sections_blacklist] = sections_blacklist
end
set_custom_color(color_key, color) click to toggle source
# File lib/minitest-bender/configuration.rb, line 57
def set_custom_color(color_key, color)
  options_config[:custom_colors] ||= {}
  options_config[:custom_colors][color_key] = color
end
time_ranking_size() click to toggle source
# File lib/minitest-bender/configuration.rb, line 78
def time_ranking_size
  final_config.fetch(:time_ranking_size)
end
time_ranking_size=(time_ranking_size) click to toggle source
# File lib/minitest-bender/configuration.rb, line 45
def time_ranking_size=(time_ranking_size)
  options_config[:time_ranking_size] = time_ranking_size
end

Private Instance Methods

custom_colors_env_config() click to toggle source
# File lib/minitest-bender/configuration.rb, line 134
def custom_colors_env_config
  Colorizer.color_keys.each_with_object({}) do |color_key, h|
    h[color_key] = ENV["BENDER_#{color_key.upcase}_COLOR"]
  end
end
default_config() click to toggle source
# File lib/minitest-bender/configuration.rb, line 116
def default_config
  DEFAULT_CONFIG
end
env_config() click to toggle source
# File lib/minitest-bender/configuration.rb, line 120
def env_config
  {
    mode: ENV['BENDER_MODE'],
    recorder: ENV['BENDER_RECORDER'],
    sections: ENV['BENDER_SECTIONS'],
    sections_blacklist: ENV['BENDER_SECTIONS_BLACKLIST'],
    overview_sort_key: ENV['BENDER_OVERVIEW_SORT_KEY'],
    time_ranking_size: ENV['BENDER_TIME_RANKING_SIZE'],
    backtrace_view: ENV['BENDER_BACKTRACE_VIEW'],
    rerun_command_stem: ENV['BENDER_RERUN_COMMAND_STEM'],
    custom_colors: custom_colors_env_config
  }
end
final_config() click to toggle source
# File lib/minitest-bender/configuration.rb, line 153
def final_config
  merged_config.tap do |config|
    config[:mode] = config[:mode].to_sym
    config[:recorder] = config[:recorder].to_sym
    config[:sections] = parsed_list(config[:sections])
    config[:sections_blacklist] = parsed_list(config[:sections_blacklist])
    config[:overview_sort_key] = config[:overview_sort_key].to_sym
    config[:time_ranking_size] = config[:time_ranking_size].to_i
    config[:rerun_command_stem] = config[:rerun_command_stem].to_s
    config[:backtrace_view] = config[:backtrace_view].to_sym
  end
end
merged_config() click to toggle source
# File lib/minitest-bender/configuration.rb, line 140
def merged_config
  [default_config, client_config, env_config, options_config].reduce do |acum, config|
    proper_config = Utils.with_symbolized_keys(Utils.without_nil_values(config))
    acum.merge(proper_config) do |key, old_val, new_val|
      if key == :custom_colors
        old_val.merge(Utils.with_symbolized_keys(Utils.without_nil_values(new_val)))
      else
        new_val
      end
    end
  end
end
parsed_list(list) click to toggle source
# File lib/minitest-bender/configuration.rb, line 111
def parsed_list(list)
  strings = list.is_a?(Array) ? list.map(&:to_s) : list.split(',')
  strings.map { |s| s.strip.to_sym }
end
sections_blacklist() click to toggle source
# File lib/minitest-bender/configuration.rb, line 170
def sections_blacklist
  final_config.fetch(:sections_blacklist)
end
sections_whitelist() click to toggle source
# File lib/minitest-bender/configuration.rb, line 166
def sections_whitelist
  final_config.fetch(:sections)
end
valid_options() click to toggle source
# File lib/minitest-bender/configuration.rb, line 107
def valid_options
  default_config.keys
end
validate_config(config) click to toggle source
# File lib/minitest-bender/configuration.rb, line 98
def validate_config(config)
  invalid_options = config.keys.map(&:to_sym) - valid_options
  unless invalid_options.empty?
    first_invalid_option = invalid_options.first
    message = "invalid option: '#{first_invalid_option}'"
    raise ArgumentError, message
  end
end