class Drntest::TestRunner
Public Class Methods
new(config, target)
click to toggle source
# File lib/drntest/test-runner.rb, line 33 def initialize(config, target) @config = config @target_path = Pathname(target).expand_path @engine = Engine.new(@config) end
Public Instance Methods
run()
click to toggle source
# File lib/drntest/test-runner.rb, line 39 def run relative_target_path = @target_path.relative_path_from(@config.suite_path) print "#{relative_target_path}: " @engine.start(@target_path) begin results = process_requests raise EngineStalled.new if results.status == :no_response ensure @engine.stop end results end
Private Instance Methods
actual_path()
click to toggle source
# File lib/drntest/test-runner.rb, line 107 def actual_path @target_path.sub_ext(".actual") end
create_temporary_file(key, content) { |file| ... }
click to toggle source
# File lib/drntest/test-runner.rb, line 170 def create_temporary_file(key, content) file = Tempfile.new("drntest-#{key}") file.write(content) file.close yield(file) end
expected_exist?()
click to toggle source
# File lib/drntest/test-runner.rb, line 95 def expected_exist? expected_path.exist? end
expected_path()
click to toggle source
# File lib/drntest/test-runner.rb, line 99 def expected_path @target_path.sub_ext(".expected") end
format_result(result)
click to toggle source
# File lib/drntest/test-runner.rb, line 161 def format_result(result) return "" if result.nil? begin JSON.pretty_generate(result) rescue JSON::GeneratorError result.inspect end end
format_results(results)
click to toggle source
# File lib/drntest/test-runner.rb, line 152 def format_results(results) formatted_results = "" results.each do |result| formatted_results << format_result(result) formatted_results << "\n" end formatted_results end
load_expected_responses()
click to toggle source
# File lib/drntest/test-runner.rb, line 86 def load_expected_responses load_jsons(expected_path) end
load_jsons(path)
click to toggle source
# File lib/drntest/test-runner.rb, line 90 def load_jsons(path) loader = JSONLoader.new loader.load(path) end
output_errors(errors)
click to toggle source
# File lib/drntest/test-runner.rb, line 177 def output_errors(errors) return if errors.empty? n_digits = (Math.log10(errors.size) + 1).ceil mark = "=" * 78 errors.each_with_index do |error, i| puts(mark) formatted_nth = "%*d)" % [n_digits, i + 1] if error.is_a?(InputError) puts("#{formatted_nth} #{error.message}") else puts("#{formatted_nth} #{error.message} (#{error.class})") puts(error.backtrace) end puts(mark) end end
output_results(results, output)
click to toggle source
# File lib/drntest/test-runner.rb, line 130 def output_results(results, output) results.each do |result| output.puts(format_result(result)) end end
process_requests()
click to toggle source
# File lib/drntest/test-runner.rb, line 53 def process_requests results = TestResults.new(@target_path) executor = TestExecutor.new(@config, @target_path, results) executor.execute if expected_exist? results.expecteds = load_expected_responses end case results.status when :success puts "SUCCESS" remove_reject_file when :no_response puts "NO RESPONSE" when :failure puts "FAILURE" save_reject_file(results.actuals) show_diff(results.expecteds, results.actuals) when :not_checked puts "NOT CHECKED" save_actual_file(results.actuals) output_results(results.actuals, $stdout) when :error puts "ERROR" output_errors(results.errors) when :omitted puts "OMITTED: #{results.omit_message}" end results end
reject_path()
click to toggle source
# File lib/drntest/test-runner.rb, line 103 def reject_path @target_path.sub_ext(".reject") end
remove_reject_file()
click to toggle source
# File lib/drntest/test-runner.rb, line 111 def remove_reject_file FileUtils.rm_rf(reject_path, :secure => true) end
save_actual_file(results)
click to toggle source
# File lib/drntest/test-runner.rb, line 119 def save_actual_file(results) save_results(results, actual_path) end
save_reject_file(results)
click to toggle source
# File lib/drntest/test-runner.rb, line 115 def save_reject_file(results) save_results(results, reject_path) end
save_results(results, output_path)
click to toggle source
# File lib/drntest/test-runner.rb, line 123 def save_results(results, output_path) puts "Saving received results as #{output_path}" File.open(output_path, "w") do |file| output_results(results, file) end end
show_diff(expecteds, actuals)
click to toggle source
# File lib/drntest/test-runner.rb, line 136 def show_diff(expecteds, actuals) formatted_expected = format_results(expecteds) formatted_actual = format_results(actuals) create_temporary_file("expected", formatted_expected) do |expected_file| create_temporary_file("actual", formatted_actual) do |actual_file| diff_options = [ "-u", "--label", "(expected)", expected_file.path, "--label", "(actual)", actual_file.path ] system("diff", *diff_options) end end end