brew/Library/Homebrew/test/test_integration_cmds.rb
2016-01-03 19:06:26 +00:00

181 lines
4.9 KiB
Ruby

require "bundler"
require "testing_env"
require "core_formula_repository"
class IntegrationCommandTests < Homebrew::TestCase
def cmd_output(*args)
cmd_args = %W[
-W0
-I#{HOMEBREW_LIBRARY_PATH}/test/lib
-rconfig
]
cmd_args << "-rsimplecov" if ENV["HOMEBREW_TESTS_COVERAGE"]
cmd_args << (HOMEBREW_LIBRARY_PATH/"../brew.rb").resolved_path.to_s
cmd_args += args
Bundler.with_original_env do
ENV["HOMEBREW_BREW_FILE"] = HOMEBREW_PREFIX/"bin/brew"
ENV["HOMEBREW_INTEGRATION_TEST"] = args.join " "
ENV["HOMEBREW_TEST_TMPDIR"] = TEST_TMPDIR
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
end
end
def cmd(*args)
output = cmd_output(*args)
assert_equal 0, $?.exitstatus
output
end
def cmd_fail(*args)
output = cmd_output(*args)
assert_equal 1, $?.exitstatus
output
end
def testball
"#{File.expand_path("..", __FILE__)}/testball.rb"
end
def test_prefix
assert_equal HOMEBREW_PREFIX.to_s,
cmd("--prefix")
end
def test_version
assert_match HOMEBREW_VERSION.to_s,
cmd("--version")
end
def test_cache
assert_equal HOMEBREW_CACHE.to_s,
cmd("--cache")
end
def test_cache_formula
assert_match %r{#{HOMEBREW_CACHE}/testball-},
cmd("--cache", testball)
end
def test_cellar
assert_equal HOMEBREW_CELLAR.to_s,
cmd("--cellar")
end
def test_cellar_formula
assert_match "#{HOMEBREW_CELLAR}/testball",
cmd("--cellar", testball)
end
def test_env
assert_match %r{CMAKE_PREFIX_PATH="#{HOMEBREW_PREFIX}[:"]},
cmd("--env")
end
def test_prefix_formula
assert_match "#{HOMEBREW_CELLAR}/testball",
cmd("--prefix", testball)
end
def test_repository
assert_match HOMEBREW_REPOSITORY.to_s,
cmd("--repository")
end
def test_install
assert_match "#{HOMEBREW_CELLAR}/testball/0.1", cmd("install", testball)
ensure
cmd("uninstall", "--force", testball)
cmd("cleanup", "--force", "--prune=all")
end
def test_bottle
cmd("install", "--build-bottle", testball)
assert_match "Formula not from core or any taps",
cmd_fail("bottle", "--no-revision", testball)
formula_file = CoreFormulaRepository.new.formula_dir/"testball.rb"
formula_file.write <<-EOS.undent
class Testball < Formula
url "https://example.com/testball-0.1.tar.gz"
end
EOS
HOMEBREW_CACHE.cd do
assert_match(/testball-0\.1.*\.bottle\.tar\.gz/,
cmd_output("bottle", "--no-revision", "testball"))
end
ensure
cmd("uninstall", "--force", "testball")
cmd("cleanup", "--force", "--prune=all")
formula_file.unlink
end
def test_uninstall
cmd("install", testball)
assert_match "Uninstalling testball", cmd("uninstall", "--force", testball)
ensure
cmd("cleanup", "--force", "--prune=all")
end
def test_cleanup
(HOMEBREW_CACHE/"test").write "test"
assert_match "#{HOMEBREW_CACHE}/test", cmd("cleanup", "--prune=all")
end
def test_readall
repo = CoreFormulaRepository.new
formula_file = repo.formula_dir/"foo.rb"
formula_file.write <<-EOS.undent
class Foo < Formula
url "https://example.com/foo-1.0.tar.gz"
end
EOS
alias_file = repo.alias_dir/"bar"
alias_file.parent.mkpath
FileUtils.ln_s formula_file, alias_file
cmd("readall", "--aliases", "--syntax")
cmd("readall", "Homebrew/homebrew")
ensure
formula_file.unlink
repo.alias_dir.rmtree
end
def test_tap
path = Tap::TAP_DIRECTORY/"homebrew/homebrew-foo"
path.mkpath
path.cd do
shutup do
system "git", "init"
system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-foo"
system "git", "add", "--all"
system "git", "commit", "-m", "init"
end
end
assert_match "homebrew/foo", cmd("tap")
assert_match "homebrew/versions", cmd("tap", "--list-official")
assert_match "1 tap", cmd("tap-info")
assert_match "https://github.com/Homebrew/homebrew-foo", cmd("tap-info", "homebrew/foo")
assert_match "https://github.com/Homebrew/homebrew-foo", cmd("tap-info", "--json=v1", "--installed")
assert_match "Pinned homebrew/foo", cmd("tap-pin", "homebrew/foo")
assert_match "homebrew/foo", cmd("tap", "--list-pinned")
assert_match "Unpinned homebrew/foo", cmd("tap-unpin", "homebrew/foo")
assert_match "Tapped", cmd("tap", "homebrew/bar", path/".git")
assert_match "Untapped", cmd("untap", "homebrew/bar")
ensure
Tap::TAP_DIRECTORY.rmtree
end
end