#!/usr/bin/ruby $:.unshift File.dirname(__FILE__) require 'pathname+yeast' require 'formula' require 'keg' require 'utils' # these are defined in bin/brew, but we don't want to break our actual # homebrew tree, and we do want to test everything :) HOMEBREW_PREFIX=Pathname.new '/tmp/testbrew/prefix' HOMEBREW_CACHE=HOMEBREW_PREFIX.parent+"cache" HOMEBREW_CELLAR=HOMEBREW_PREFIX.parent+"cellar" HOMEBREW_USER_AGENT="Homebrew" HOMEBREW_CELLAR.mkpath raise "HOMEBREW_CELLAR couldn't be created!" unless HOMEBREW_CELLAR.directory? at_exit { HOMEBREW_PREFIX.parent.rmtree } require 'test/unit' # must be after at_exit require 'ARGV+yeast' # needs to be after test/unit to avoid conflict with OptionsParser class MockFormula #{path}` assert_not_nil Formula.factory(FOOBAR) end def test_cant_override_brew assert_raises(RuntimeError) { TestBallOverrideBrew.new } end def test_abstract_formula f=MostlyAbstractFormula.new assert_nil f.name assert_raises(RuntimeError) { f.prefix } nostdout { assert_raises(ExecutionError) { f.brew } } end def test_zip nostdout { assert_nothing_raised { TestZip.new.brew {} } } end def test_no_ARGV_dupes ARGV.unshift'foo' ARGV.unshift'foo' n=0 ARGV.named.each{|arg| n+=1 if arg == 'foo'} assert_equal 1, n end def test_ARGV assert_raises(UsageError) { ARGV.named } assert_raises(UsageError) { ARGV.formulae } assert_raises(UsageError) { ARGV.kegs } assert ARGV.named_empty? (HOMEBREW_CELLAR+'foo'+'0.1').mkpath ARGV.unshift 'foo' assert_equal 1, ARGV.named.length assert_equal 1, ARGV.kegs.length assert_raises(FormulaUnavailableError) { ARGV.formulae } end def test_version_dir d=HOMEBREW_CELLAR+'foo-0.1.9' d.mkpath assert_equal '0.1.9', d.version end end