spec/spec_helper.rb in foreman-0.63.0-java vs spec/spec_helper.rb in foreman-0.64.0
- old
+ new
@@ -8,10 +8,19 @@
require "fakefs/safe"
require "fakefs/spec_helpers"
$:.unshift File.expand_path("../../lib", __FILE__)
+begin
+ def running_ruby_18?
+ defined?(RUBY_VERSION) and RUBY_VERSION =~ /^1\.8\.\d+/
+ end
+ require 'posix/spawn' if running_ruby_18?
+rescue LoadError
+ STDERR.puts "WARNING: foreman requires gem `posix-spawn` on Ruby #{RUBY_VERSION}. Please `gem install posix-spawn`."
+end
+
def mock_export_error(message)
lambda { yield }.should raise_error(Foreman::Export::Exception, message)
end
def mock_error(subject, message)
@@ -19,28 +28,36 @@
mock(subject).puts("ERROR: #{message}")
yield
end
end
+def make_pipe
+ IO.method(:pipe).arity.zero? ? IO.pipe : IO.pipe("BINARY")
+end
+
def foreman(args)
capture_stdout do
begin
Foreman::CLI.start(args.split(" "))
rescue SystemExit
end
end
end
def forked_foreman(args)
- rd, wr = IO.pipe("BINARY")
- Process.spawn("bundle exec bin/foreman #{args}", :out => wr, :err => wr)
+ rd, wr = make_pipe
+ if running_ruby_18?
+ POSIX::Spawn.spawn({}, "bundle exec bin/foreman #{args}", :out => wr, :err => wr)
+ else
+ Process.spawn("bundle exec bin/foreman #{args}", :out => wr, :err => wr)
+ end
wr.close
rd.read
end
def fork_and_capture(&blk)
- rd, wr = IO.pipe("BINARY")
+ rd, wr = make_pipe
pid = fork do
rd.close
wr.sync = true
$stdout.reopen wr
$stderr.reopen wr
@@ -55,11 +72,15 @@
buffer += rd.gets
end
end
def fork_and_get_exitstatus(args)
- pid = Process.spawn("bundle exec bin/foreman #{args}", :out => "/dev/null", :err => "/dev/null")
+ pid = if running_ruby_18?
+ POSIX::Spawn.spawn({}, "bundle exec bin/foreman #{args}", :out => "/dev/null", :err => "/dev/null")
+ else
+ Process.spawn("bundle exec bin/foreman #{args}", :out => "/dev/null", :err => "/dev/null")
+ end
Process.wait(pid)
$?.exitstatus
end
def mock_exit(&block)
@@ -139,11 +160,11 @@
s.gsub(/\n[\n\s]*/, "\n")
end
def capture_stdout
old_stdout = $stdout.dup
- rd, wr = IO.method(:pipe).arity.zero? ? IO.pipe : IO.pipe("BINARY")
+ rd, wr = make_pipe
$stdout = wr
yield
wr.close
rd.read
ensure
@@ -154,6 +175,7 @@
config.treat_symbols_as_metadata_keys_with_true_values = true
config.color_enabled = true
config.order = 'rand'
config.include FakeFS::SpecHelpers, :fakefs
config.mock_with :rr
+ config.backtrace_clean_patterns = []
end