class Koine::TestRunner::Builder

Public Class Methods

new(arguments) click to toggle source
# File lib/koine/test_runner/builder.rb, line 6
def initialize(arguments)
  initialize_from_yaml_config(arguments.config_file)
end

Public Instance Methods

build() click to toggle source
# File lib/koine/test_runner/builder.rb, line 10
def build
  TestRunner.new(@adapters)
end

Private Instance Methods

build_adapter(config) click to toggle source
# File lib/koine/test_runner/builder.rb, line 24
def build_adapter(config)
  adapter_name = config.delete('adapter')
  adapter_class = adapter_name

  if adapter_class.downcase == adapter_class.to_s
    adapter_class = "Koine::TestRunner::Adapters::#{classify(adapter_class)}"
  end

  unless Object.const_defined?(adapter_class)
    raise ArgumentError, "Cannot locate adapter #{adapter_name} => #{adapter_class}"
  end

  klass = Object.const_get(adapter_class)
  klass.new(**symbolize_keys(config))
end
classify(klass) click to toggle source
# File lib/koine/test_runner/builder.rb, line 40
def classify(klass)
  klass.to_s.split('_').map(&:capitalize).join('')
end
initialize_from_yaml_config(config_file) click to toggle source
# File lib/koine/test_runner/builder.rb, line 16
def initialize_from_yaml_config(config_file)
  config = YAML.load_file(config_file)

  @adapters = config['adapters'].map do |adapter_config|
    build_adapter(adapter_config.last)
  end
end
symbolize_keys(hash) click to toggle source
# File lib/koine/test_runner/builder.rb, line 44
def symbolize_keys(hash)
  {}.tap do |new_hash|
    hash.each do |key, value|
      new_hash[key.to_sym] = value
    end
  end
end