class Examiner::RakeRunner

Attributes

failures[R]
stderr_lines[R]
stdout_lines[R]
tests[R]

Public Class Methods

new() click to toggle source
# File lib/examiner/rake_runner.rb, line 12
def initialize
  @tests, @failures = 0, 0
  @stdout_lines, @stderr_lines = [], []
  @success = false
end

Public Instance Methods

run(directory) click to toggle source
# File lib/examiner/rake_runner.rb, line 18
def run(directory)
  raise RakefileMissingError.new(directory) unless rakefile?(directory)

  Open3.popen3('rake', chdir: directory) do |_, stdout, stderr, wait_thr|
    @stdout_lines, @stderr_lines = stdout.readlines, stderr.readlines
    parse_stderr(directory)
    parse_stdout
  end
end

Private Instance Methods

parse_stderr(directory) click to toggle source
# File lib/examiner/rake_runner.rb, line 30
def parse_stderr(directory)
  unless MinitestParser.new.default_rake?(@stderr_lines)
    raise MissingDefaultRakeTaskError.new(directory)
  end
end
parse_stdout() click to toggle source
# File lib/examiner/rake_runner.rb, line 36
def parse_stdout
  parser = MinitestParser.new
  parser.parse @stdout_lines
  if parser.success?
    @tests = parser.tests
    @failures = parser.failures
  end
end
rakefile?(directory) click to toggle source
# File lib/examiner/rake_runner.rb, line 45
def rakefile?(directory)
  File.exists?(File.join(directory, 'Rakefile'))
end