class Greybox::Runner

Attributes

config[R]
failures[R]

Public Class Methods

new(config) click to toggle source
# File lib/greybox/runner.rb, line 6
def initialize(config)
  @config = config
  @failures = []
end

Public Instance Methods

expected_filename(input_filename) click to toggle source
# File lib/greybox/runner.rb, line 15
def expected_filename(input_filename)
  expected_filename = config.expected.call(input_filename)
  raise "Output filename for #{input_filename} was same as input!" if expected_filename == input_filename
  expected_filename
end
expected_for(filename) click to toggle source
# File lib/greybox/runner.rb, line 21
def expected_for(filename)
  file = expected_filename(filename)
  unless File.exist?(file)
    raise "No blackbox_command available to generate #{file}" unless config.blackbox_command
    File.open(file, 'w') do |f|
      f.write run_command(config.blackbox_command, filename)
    end
  end
  File.read(file)
end
files() click to toggle source
# File lib/greybox/runner.rb, line 11
def files
  Dir.glob(config.input)
end
insert_filename(command, filename) click to toggle source
# File lib/greybox/runner.rb, line 44
def insert_filename(command, filename)
  command.gsub("%", filename)
end
report_failure(filename, expected, actual) click to toggle source
# File lib/greybox/runner.rb, line 48
def report_failure(filename, expected, actual)
  @failures << { filename: filename, expected: expected, actual: actual }
end
run() click to toggle source
# File lib/greybox/runner.rb, line 32
def run
  files.each do |input_file|
    expected = expected_for(input_file)
    actual = run_command(config.test_command, input_file)
    report_failure(input_file, expected, actual) unless config.comparison.call(actual, expected)
  end
end
run_command(command, file) click to toggle source
# File lib/greybox/runner.rb, line 40
def run_command(command, file)
  `#{insert_filename(command, file)}`
end