
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.
96 lines
2.1 KiB
Ruby
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
|