class JmlTestRunner::Runner

Attributes

dir[R]
exes[R]
suites_run[R]

Public Class Methods

new(test_dir) click to toggle source
# File lib/jml_test_runner/runner.rb, line 8
def initialize(test_dir)
  @dir = File.expand_path(test_dir)
  @exes = Dir["#{@dir}/**/*"].select { |f| f =~ /(.+)_tests?$/ }
  @suites_run = []
end

Public Instance Methods

run(suite_name = nil) click to toggle source
# File lib/jml_test_runner/runner.rb, line 14
def run(suite_name = nil)
  _check_for_suite(suite_name) if suite_name
  _do_run(suite_name)
  @formatter = JmlTestRunner::Formatters::Basic.new(self)
  @formatter.print_formatted_output
end

Private Instance Methods

_check_for_suite(name) click to toggle source
# File lib/jml_test_runner/runner.rb, line 23
def _check_for_suite(name)
  raise "#{name} not found!" unless @exes.include?(name)
end
_do_run(suite_name = nil) click to toggle source
# File lib/jml_test_runner/runner.rb, line 27
def _do_run(suite_name = nil)
  return _run_single_test(suite_name) if suite_name
  @exes.each do |exe|
    _run_single_test(exe)
  end
end
_parse_xml_output(xml) click to toggle source
# File lib/jml_test_runner/runner.rb, line 46
def _parse_xml_output(xml)
  @suites_run.push(Suite.new(xml))
end
_run_single_test(test_exe) click to toggle source
# File lib/jml_test_runner/runner.rb, line 34
def _run_single_test(test_exe)
  Open3.popen2(
    {
      'CK_XML_LOG_FILE_NAME' => '-',
      'CK_VERBOSITY' => 'silent'
    },
    "./#{File.basename(test_exe)}",
    chdir: @dir) do |_input, output, _th|
      _parse_xml_output(output)
    end
end