Sha256: 99dab034543e5cae74b349dcf3e2c5c455d605f5652eacb8ac15043487de792a

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

require 'session'

class SuitesRunner
  TEST_SUITES = [
    [:rspec, 'RSpec', 'RSpec'],
    [:test_unit, 'TestUnit', 'Test::Unit'],
    [:minitest, 'Minitest', 'MiniTest']
  ]

  attr_reader :bash

  def initialize
    @bash = Session::Bash.new
  end

  def run
    TEST_SUITES.each_with_index do |(path, class_fragment, desc), i|
      puts "----------------" unless i == 0
      run_examples(path, class_fragment, desc)
      puts
    end
  end

  def run_examples(path, class_fragment, desc)
    path = File.expand_path("../suites/#{path}/runner.rb", __FILE__)
    # From http://www.eglug.org/node/946
    bash.execute "exec 3>&1", :out => STDOUT, :err => STDERR
    # XXX: why are we checking for this warning here...
    bash.execute "ruby -W #{path} 2>&1 >&3 3>&- | grep -v 'warning: useless use of' 3>&-; STATUS=${PIPESTATUS[0]}", :out => STDOUT, :err => STDERR
    status = bash.execute("echo $STATUS")[0].to_s.strip.to_i
    bash.execute "exec 3>&-", :out => STDOUT, :err => STDERR
    unless status == 0
      raise "#{desc} Suite Failed"
    end
  end
end

if $0 == __FILE__
  SuitesRunner.new.run
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rr-1.0.5 spec/runner.rb
rr-1.0.5.rc2 spec/runner.rb
rr-1.0.5.rc1 spec/runner.rb