aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-09 17:15:36 +0100
committerMarkus Reiter2017-02-09 17:17:48 +0100
commit956daf37a0de03f5ffddc35bb85efcd33ee407da (patch)
tree90d0c0fc2f7629336bdeb6be6a3e932fe2921915 /Library/Homebrew
parent9aa4888d2b45c7a07a95183cc4c026d828391914 (diff)
downloadbrew-956daf37a0de03f5ffddc35bb85efcd33ee407da.tar.bz2
Use `Open3` for integration tests instead of manually forking.
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/keg.rb4
-rw-r--r--Library/Homebrew/test/bottle_test.rb2
-rw-r--r--Library/Homebrew/test/options_test.rb2
-rw-r--r--Library/Homebrew/test/support/helper/integration_command_test_case.rb71
4 files changed, 30 insertions, 49 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 837968615..f743612ea 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -217,6 +217,10 @@ class Keg
true
end
+ def require_relocation?
+ # no-op
+ end
+
def linked?
linked_keg_record.symlink? &&
linked_keg_record.directory? &&
diff --git a/Library/Homebrew/test/bottle_test.rb b/Library/Homebrew/test/bottle_test.rb
index c10746e09..7981ccf79 100644
--- a/Library/Homebrew/test/bottle_test.rb
+++ b/Library/Homebrew/test/bottle_test.rb
@@ -14,7 +14,7 @@ class IntegrationCommandTestBottle < IntegrationCommandTestCase
FileUtils.ln_s "not-exist", "symlink"
end
assert_match(/testball-0\.1.*\.bottle\.tar\.gz/,
- cmd_output("bottle", "--no-rebuild", "testball"))
+ cmd("bottle", "--no-rebuild", "testball"))
ensure
FileUtils.rm_f Dir["testball-0.1*.bottle.tar.gz"]
end
diff --git a/Library/Homebrew/test/options_test.rb b/Library/Homebrew/test/options_test.rb
index f38ec4415..09ea14180 100644
--- a/Library/Homebrew/test/options_test.rb
+++ b/Library/Homebrew/test/options_test.rb
@@ -9,7 +9,7 @@ class IntegrationCommandTestOptions < IntegrationCommandTestCase
EOS
assert_equal "--with-foo\n\tBuild with foo\n--without-bar\n\tBuild without bar support",
- cmd_output("options", "testball").chomp
+ cmd("options", "testball").chomp
end
end
diff --git a/Library/Homebrew/test/support/helper/integration_command_test_case.rb b/Library/Homebrew/test/support/helper/integration_command_test_case.rb
index a36b56691..45e73757a 100644
--- a/Library/Homebrew/test/support/helper/integration_command_test_case.rb
+++ b/Library/Homebrew/test/support/helper/integration_command_test_case.rb
@@ -3,6 +3,7 @@ require "fileutils"
require "pathname"
require "formula"
require "test/support/helper/test_case"
+require "open3"
class IntegrationCommandTestCase < Homebrew::TestCase
def setup
@@ -28,57 +29,34 @@ class IntegrationCommandTestCase < Homebrew::TestCase
end
def cmd_output(*args)
- # 1.8-compatible way of writing def cmd_output(*args, **env)
env = args.last.is_a?(Hash) ? args.pop : {}
- cmd_args = %W[
- -W0
- -I#{HOMEBREW_LIBRARY_PATH}/test/support/lib
- -I#{HOMEBREW_LIBRARY_PATH}
- -rconfig
+
+ env.merge!(
+ "HOMEBREW_BREW_FILE" => HOMEBREW_PREFIX/"bin/brew",
+ "HOMEBREW_INTEGRATION_TEST" => cmd_id_from_args(args),
+ "HOMEBREW_TEST_TMPDIR" => TEST_TMPDIR,
+ "HOMEBREW_DEVELOPER" => ENV["HOMEBREW_DEVELOPER"]
+ )
+
+ ruby_args = [
+ "-W0",
+ "-I", "#{HOMEBREW_LIBRARY_PATH}/test/support/lib",
+ "-I", HOMEBREW_LIBRARY_PATH.to_s,
+ "-rconfig"
]
- if ENV["HOMEBREW_TESTS_COVERAGE"]
- # This is needed only because we currently use a patched version of
- # simplecov, and gems installed through git are not available without
- # requiring bundler/setup first. See also the comment in test/Gemfile.
- # Remove this line when we'll switch back to a stable simplecov release.
- cmd_args << "-rbundler/setup"
- cmd_args << "-rsimplecov"
- end
- cmd_args << "-rtest/support/helper/integration_mocks"
- cmd_args << (HOMEBREW_LIBRARY_PATH/"brew.rb").resolved_path.to_s
- cmd_args += args
- developer = ENV["HOMEBREW_DEVELOPER"]
- Bundler.with_original_env do
- ENV["HOMEBREW_BREW_FILE"] = HOMEBREW_PREFIX/"bin/brew"
- ENV["HOMEBREW_INTEGRATION_TEST"] = cmd_id_from_args(args)
- ENV["HOMEBREW_TEST_TMPDIR"] = TEST_TMPDIR
- ENV["HOMEBREW_DEVELOPER"] = developer
- env.each_pair do |k, v|
- ENV[k] = v
- end
+ ruby_args << "-rsimplecov" if ENV["HOMEBREW_TESTS_COVERAGE"]
+ ruby_args << "-rtest/support/helper/integration_mocks"
+ ruby_args << (HOMEBREW_LIBRARY_PATH/"brew.rb").resolved_path.to_s
- read, write = IO.pipe
- begin
- pid = fork do
- read.close
- $stdout.reopen(write)
- $stderr.reopen(write)
- write.close
- exec RUBY_PATH, *cmd_args
- end
- write.close
- read.read.chomp
- ensure
- Process.wait(pid)
- read.close
- end
+ Bundler.with_original_env do
+ output, status = Open3.capture2e(env, RUBY_PATH, *ruby_args, *args)
+ [output.chomp, status]
end
end
def cmd(*args)
- output = cmd_output(*args)
- status = $?.exitstatus
- assert_equal 0, status, <<-EOS.undent
+ output, status = cmd_output(*args)
+ assert status.success?, <<-EOS.undent
`brew #{args.join " "}` exited with non-zero status!
#{output}
EOS
@@ -86,9 +64,8 @@ class IntegrationCommandTestCase < Homebrew::TestCase
end
def cmd_fail(*args)
- output = cmd_output(*args)
- status = $?.exitstatus
- refute_equal 0, status, <<-EOS.undent
+ output, status = cmd_output(*args)
+ refute status.success?, <<-EOS.undent
`brew #{args.join " "}` exited with zero status!
#{output}
EOS