brew/Library/Homebrew/test/test_formula_install.rb
Max Howell 768910283a Refactor the brew command into one file per command
The code was sucking. To the extent that maintenance was hard. It's a lot
easier to work with code that is sensibly split at sensible boundaries. So
now it is more like that.

But the refactor is minimal. Because we don't want you to have more merge
hell than absolutely necessary.

If you merge you will need to pay attention to brew.h.rb (as it is deleted)
and bin/brew (as command logic is gone). It will be painful, but you will just
have to help git out by moving any changes around manually.

Note compatibility.rb. It ensures that any function renames or removals don't
break anything. We're pretty serious about backwards compatibility. And that's
because we encourage you to hack around with the innards. And we couldn't do
that if we would then just make stuff disappear behind your back.
2011-03-12 11:55:02 -08:00

96 lines
2.1 KiB
Ruby

require 'testing_env'
require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser
ARGV.extend(HomebrewArgvExtension)
require 'formula'
require 'test/testball'
require 'keg'
require 'utils'
class TestScriptFileFormula <ScriptFileFormula
url "file:///#{Pathname.new(ABS__FILE__).realpath}"
version "1"
def initialize
@name='test-script-formula'
@homepage = 'http://example.com/'
super
end
end
class ConfigureTests < Test::Unit::TestCase
def test_detect_failed_configure
f=ConfigureFails.new
begin
f.brew { f.install }
rescue BuildError => e
assert e.was_running_configure?
end
end
end
class InstallTests < Test::Unit::TestCase
def temporary_install f
# Brew and install the given formula
nostdout do
f.brew { f.install }
end
# Allow the test to do some processing
yield
# Remove the brewed formula and double check
# that it did get removed. This lets multiple
# tests use the same formula name without
# stepping on each other.
keg=Keg.new f.prefix
keg.uninstall
assert !keg.exist?
assert !f.installed?
end
def test_a_basic_install
f=TestBall.new
assert_equal Formula.path(f.name), f.path
assert !f.installed?
temporary_install f do
assert_match Regexp.new("^#{HOMEBREW_CELLAR}/"), f.prefix.to_s
# Test that things made it into the Keg
assert f.bin.directory?
assert_equal 3, f.bin.children.length
libexec=f.prefix+'libexec'
assert libexec.directory?
assert_equal 1, libexec.children.length
assert !(f.prefix+'main.c').exist?
assert f.installed?
# Test that things make it into the Cellar
keg=Keg.new f.prefix
keg.link
assert_equal 2, HOMEBREW_PREFIX.children.length
assert (HOMEBREW_PREFIX+'bin').directory?
assert_equal 3, (HOMEBREW_PREFIX+'bin').children.length
end
end
def test_script_install
f=TestScriptFileFormula.new
temporary_install f do
nostdout do
f.brew { f.install }
end
assert_equal 1, f.bin.children.length
end
end
end