Permalink
Fetching contributors…
Cannot retrieve contributors at this time
83 lines (69 sloc) 2 KB
require 'rubygems'
begin
gem "test-unit"
rescue LoadError
end
ENV["RAILS_ENV"] ||= "test"
require 'fileutils'
require 'test/unit'
require 'active_support'
require 'active_support/test_case'
$counter = 0
LIB_PATH = File.expand_path('../../lib', __FILE__)
BIN_PATH = File.expand_path('../../bin/enginex', __FILE__)
DESTINATION_ROOT = File.expand_path('../enginex', __FILE__)
FileUtils.rm_rf(DESTINATION_ROOT)
$:.unshift LIB_PATH
require 'enginex'
class ActiveSupport::TestCase
def run_enginex(suite = :test_unit)
if suite == :rspec
option = '--test-framework=rspec'
else
option = '--test-framework=test_unit'
end
$counter += 1
`ruby -I#{LIB_PATH} -rrubygems #{BIN_PATH} #{destination_root} #{option}`
yield
FileUtils.rm_rf(File.dirname(destination_root))
rescue Exception => e
puts "Error happened. #{destination_root.inspect} left for inspecting."
raise e
end
def destination_root
File.join(DESTINATION_ROOT, $counter.to_s, "demo_engine")
end
def capture(stream)
begin
stream = stream.to_s
eval "$#{stream} = StringIO.new"
yield
eval("$#{stream}").string
ensure
eval("$#{stream} = #{stream.upcase}")
end
end
alias :silence :capture
def assert_file(relative, *contents)
absolute = File.expand_path(relative, destination_root)
assert File.exists?(absolute), "Expected file #{relative.inspect} to exist, but does not"
read = File.read(absolute) if block_given? || !contents.empty?
yield read if block_given?
contents.each do |content|
assert_match content, read
end
end
alias :assert_directory :assert_file
def assert_no_file(relative)
absolute = File.expand_path(relative, destination_root)
assert !File.exists?(absolute), "Expected file #{relative.inspect} to not exist, but does"
end
alias :assert_no_directory :assert_no_file
def execute(command)
current_path = Dir.pwd
FileUtils.cd destination_root
`#{command}`
ensure
FileUtils.cd current_path
end
end