class QUnited::Runner

Constants

DRIVERS_PRIORITY

The drivers in order of which to use first when not otherwise specified

Attributes

js_source_files[RW]
js_test_files[RW]
options[RW]

Public Class Methods

new(js_source_files, js_test_files, options={}) click to toggle source
# File lib/qunited/runner.rb, line 9
def initialize(js_source_files, js_test_files, options={})
  @js_source_files, @js_test_files, @options = js_source_files, js_test_files, options
end

Public Instance Methods

best_available_driver() click to toggle source
# File lib/qunited/runner.rb, line 75
def best_available_driver
  DRIVERS_PRIORITY.map { |driver| get_driver(driver) }.find { |driver| driver.available? }
end
confirm_existence_of_files(files_array) click to toggle source
# File lib/qunited/runner.rb, line 79
def confirm_existence_of_files(files_array)
  files_array.each { |f| raise UsageError, "File not found: #{f}" unless File.exist? f }
end
get_driver(klass) click to toggle source
# File lib/qunited/runner.rb, line 63
def get_driver(klass)
  if known_driver_classes.include?(klass.to_sym)
    ::QUnited::Driver.const_get(klass.to_s)
  end
end
get_formatter(klass) click to toggle source
# File lib/qunited/runner.rb, line 69
def get_formatter(klass)
  if known_formatter_classes.include?(klass.to_sym)
    ::QUnited::Formatter.const_get(klass.to_s)
  end
end
resolve_driver_class() click to toggle source
# File lib/qunited/runner.rb, line 29
def resolve_driver_class
  if options[:driver]
    begin
      driver_class = get_driver(options[:driver])
    rescue NameError
      raise UsageError, "#{options[:driver].to_s} does not exist"
    end

    if !driver_class
      raise UsageError, "#{driver_class} driver not found"
    elsif !driver_class.available?
      raise UsageError, "#{driver_class} driver specified, but not available"
    end
  end

  driver_class ||= best_available_driver
  raise(UsageError, 'No driver available') unless driver_class
  driver_class
end
resolve_formatter_class() click to toggle source
# File lib/qunited/runner.rb, line 49
def resolve_formatter_class
  if options[:formatter]
    begin
      formatter_class = get_formatter(options[:formatter])
    rescue NameError
      raise UsageError, "#{options[:formatter].to_s} does not exist"
    end

    raise UsageError, "#{formatter_class} formatter not found" unless formatter_class
  end

  formatter_class || ::QUnited::Formatter::Dots
end
run() click to toggle source
# File lib/qunited/runner.rb, line 13
def run
  [js_source_files, js_test_files].each { |files| confirm_existence_of_files files }

  driver_class, formatter_class = resolve_driver_class, resolve_formatter_class
  driver = driver_class.new(js_source_files, js_test_files)
  driver.formatter = formatter_class.new({:driver_name => driver.name})

  if options[:fixture_files]
    driver.fixture_files = options[:fixture_files]
  end

  results = driver.run

  results.all? { |r| r.passed? }
end

Private Instance Methods

known_driver_classes() click to toggle source
# File lib/qunited/runner.rb, line 85
def known_driver_classes
  ::QUnited::Driver.constants.map(&:to_sym).reject { |d| [:Base, :ResultsCollector].include? d }
end
known_formatter_classes() click to toggle source
# File lib/qunited/runner.rb, line 89
def known_formatter_classes
  ::QUnited::Formatter.constants.map(&:to_sym).reject { |d| d == :Base }
end