require 'testing_env' require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser ARGV.extend(HomebrewArgvExtension) require 'test/testball' require 'formula_installer' require 'utils' # Custom formula installer that checks deps but does not # run the install code. We also override the external dep # install messages, so for instance the Python check doesnt # look for the pip formula (which isn't avaialble in test # mode.) class DontActuallyInstall < FormulaInstaller def install_private f ; end def pyerr dep "Python module install message." end def plerr dep "Perl module install message." end def rberr dep "Ruby module install message." end end class BadPerlBall :perl def initialize name=nil super "uses_perl_ball" end end class GoodPerlBall :perl def initialize name=nil super "uses_perl_ball" end end class BadPythonBall :python def initialize name=nil super "uses_python_ball" end end class GoodPythonBall :python def initialize name=nil super "uses_python_ball" end end class BadRubyBall :ruby def initialize name=nil super "uses_ruby_ball" end end class GoodRubyBall :ruby def initialize name=nil super "uses_ruby_ball" end end class ExternalDepsTests < Test::Unit::TestCase def check_deps_fail f assert_raises(RuntimeError) do DontActuallyInstall.new.install f.new end end def check_deps_pass f assert_nothing_raised do DontActuallyInstall.new.install f.new end end def test_bad_perl_deps check_deps_fail BadPerlBall end def test_good_perl_deps check_deps_pass GoodPerlBall end def test_bad_python_deps check_deps_fail BadPythonBall end def test_good_python_deps check_deps_pass GoodPythonBall end def test_bad_ruby_deps check_deps_fail BadRubyBall end def test_good_ruby_deps check_deps_pass GoodRubyBall end end