class Taeval::Unittest::Runner

Public Class Methods

new(config, output, reporter) click to toggle source
# File lib/taeval/unittest/runner.rb, line 10
def initialize(config, output, reporter)
  @config   = Config.new(config)
  @output   = output
  @reporter = reporter
end

Public Instance Methods

run() click to toggle source
# File lib/taeval/unittest/runner.rb, line 16
def run
  cp_original

  if !@config.cmd.nil?
    cmd = @config.cmd 
  elsif !@config.tool.nil?
    case @config.tool.to_sym
    when :gradle
      cmd = 'gradle test'
    else
      raise "Unittest: #{@config.tool} is not supported."
    end
  else
    raise 'Unittest: Unittest\'s tool or cmd should be defined.'
  end
  
  exec(cmd)
end

Private Instance Methods

cp_original() click to toggle source
# File lib/taeval/unittest/runner.rb, line 37
def cp_original
  Dir.glob("#{@config.solutions}/*").each do |solution|
    begin
      FileUtils.cp_r(Dir.glob("#{@config.original}/unittest/*"), "#{solution}/unittest")
    rescue => e
      repo = solution.split('/').last
      @reporter.add(repo: repo, runner: :unittest, msg: "#{repo}, #{e.message}")
    end
  end
end
exec(cmd) click to toggle source
# File lib/taeval/unittest/runner.rb, line 48
def exec(cmd)
  Dir.glob("#{@config.solutions}/*").each do |solution|
    stdout, stderr, status = Open3.capture3(cmd, chdir: "#{solution}/unittest")

    @output.print "Executing #{cmd} in #{solution}", stdout, stderr
    
    @reporter.add(repo: solution.split('/').last, runner: :unittest, msg: "'#{cmd}' in #{solution}/unittest failed, status = #{status.exitstatus}") if status.exitstatus != 0
  end
end