diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index 24cf30e2bf..4d198ba28d 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -153,14 +153,6 @@ class FormulaTests < Homebrew::TestCase assert_nil Testball.new <=> Object.new end - def test_class_naming - assert_equal "ShellFm", Formulary.class_s("shell.fm") - assert_equal "Fooxx", Formulary.class_s("foo++") - assert_equal "SLang", Formulary.class_s("s-lang") - assert_equal "PkgConfig", Formulary.class_s("pkg-config") - assert_equal "FooBar", Formulary.class_s("foo_bar") - end - def test_formula_spec_integration f = formula do homepage "http://example.com" @@ -212,38 +204,6 @@ class FormulaTests < Homebrew::TestCase assert_equal Pathname.new("#{HOMEBREW_LIBRARY}/Formula/#{name}.rb"), Formulary.core_path(name) end - def test_factory - name = "foo-bar" - path = HOMEBREW_PREFIX+"Library/Formula/#{name}.rb" - path.dirname.mkpath - File.open(path, "w") do |f| - f << %( - class #{Formulary.class_s(name)} < Formula - url 'foo-1.0' - end - ) - end - assert_kind_of Formula, Formulary.factory(name) - ensure - path.unlink - end - - def test_factory_with_fully_qualified_name - name = "foo-bar" - path = HOMEBREW_PREFIX+"Library/Formula/#{name}.rb" - path.dirname.mkpath - File.open(path, "w") do |f| - f << %( - class #{Formulary.class_s(name)} < Formula - url 'foo-1.0' - end - ) - end - assert_kind_of Formula, Formulary.factory("homebrew/homebrew/#{name}") - ensure - path.unlink - end - def test_class_specs_are_always_initialized f = formula { url "foo-1.0" } diff --git a/Library/Homebrew/test/test_formula_installer_bottle.rb b/Library/Homebrew/test/test_formula_installer_bottle.rb index 61ed78b192..0f9bdfb5e4 100644 --- a/Library/Homebrew/test/test_formula_installer_bottle.rb +++ b/Library/Homebrew/test/test_formula_installer_bottle.rb @@ -26,9 +26,7 @@ class InstallBottleTests < Homebrew::TestCase keg.unlink keg.uninstall formula.clear_cache - Dir["#{HOMEBREW_CACHE}/testball_bottle*"].each { |f| File.delete(f) } - # there will be log files when sandbox is enable. - formula.logs.rmtree if formula.logs.directory? + formula.bottle.clear_cache end refute_predicate keg, :exist? diff --git a/Library/Homebrew/test/test_formulary.rb b/Library/Homebrew/test/test_formulary.rb new file mode 100644 index 0000000000..d622a8ccfa --- /dev/null +++ b/Library/Homebrew/test/test_formulary.rb @@ -0,0 +1,168 @@ +require "testing_env" + +class FormularyTest < Homebrew::TestCase + def test_class_naming + assert_equal "ShellFm", Formulary.class_s("shell.fm") + assert_equal "Fooxx", Formulary.class_s("foo++") + assert_equal "SLang", Formulary.class_s("s-lang") + assert_equal "PkgConfig", Formulary.class_s("pkg-config") + assert_equal "FooBar", Formulary.class_s("foo_bar") + end +end + +class FormularyFactoryTest < Homebrew::TestCase + def setup + @name = "testball_bottle" + @path = HOMEBREW_PREFIX/"Library/Formula/#{@name}.rb" + @bottle_dir = Pathname.new("#{File.expand_path("..", __FILE__)}/bottles") + @bottle = @bottle_dir/"testball_bottle-0.1.#{bottle_tag}.bottle.tar.gz" + @path.write <<-EOS.undent + class #{Formulary.class_s(@name)} < Formula + url "file://#{File.expand_path("..", __FILE__)}/tarballs/testball-0.1.tbz" + sha256 "1dfb13ce0f6143fe675b525fc9e168adb2215c5d5965c9f57306bb993170914f" + + bottle do + cellar :any_skip_relocation + root_url "file://#{@bottle_dir}" + sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => :#{bottle_tag} + end + + def install + prefix.install "bin" + prefix.install "libexec" + end + end + EOS + end + + def teardown + @path.unlink + end + + def test_factory + assert_kind_of Formula, Formulary.factory(@name) + end + + def test_factory_with_fully_qualified_name + assert_kind_of Formula, Formulary.factory("homebrew/homebrew/#{@name}") + end + + def test_formula_unavailable_error + assert_raises(FormulaUnavailableError) { Formulary.factory("not_existed_formula") } + end + + def test_factory_from_path + assert_kind_of Formula, Formulary.factory(@path) + end + + def test_factory_from_url + formula = shutup { Formulary.factory("file://#{@path}") } + assert_kind_of Formula, formula + ensure + formula.path.unlink + end + + def test_factory_from_bottle + formula = Formulary.factory(@bottle) + assert_kind_of Formula, formula + assert_equal @bottle.realpath, formula.local_bottle_path + end + + def test_factory_from_alias + alias_dir = HOMEBREW_LIBRARY/"Aliases" + alias_dir.mkpath + FileUtils.ln_s @path, alias_dir/"foo" + assert_kind_of Formula, Formulary.factory("foo") + ensure + alias_dir.rmtree + end + + def test_factory_from_rack + formula = Formulary.factory(@path) + installer = FormulaInstaller.new(formula) + shutup { installer.install } + keg = Keg.new(formula.prefix) + assert_kind_of Formula, Formulary.from_rack(formula.rack) + ensure + keg.unlink + keg.uninstall + formula.clear_cache + formula.bottle.clear_cache + end + + def test_load_from_contents + assert_kind_of Formula, Formulary.from_contents(@name, @path, @path.read) + end +end + +class FormularyTapFactoryTest < Homebrew::TestCase + def setup + @name = "foo" + @tap = Tap.new "homebrew", "foo" + @path = @tap.path/"#{@name}.rb" + @code = <<-EOS.undent + class #{Formulary.class_s(@name)} < Formula + url "foo-1.0" + end + EOS + @path.write @code + end + + def teardown + @tap.path.parent.parent.rmtree + end + + def test_factory_tap_formula + assert_kind_of Formula, Formulary.factory("#{@name}") + end + + def test_tap_formula_unavailable_error + assert_raises(TapFormulaUnavailableError) { Formulary.factory("#{@tap}/not_existed_formula") } + end + + def test_factory_tap_formula_with_fully_qualified_name + assert_kind_of Formula, Formulary.factory("#{@tap}/#{@name}") + end + + def test_factory_ambiguity_tap_formulae + another_tap = Tap.new "homebrew", "bar" + (another_tap.path/"#{@name}.rb").write @code + assert_raises(TapFormulaAmbiguityError) { Formulary.factory(@name) } + end +end + +class FormularyTapPriorityTest < Homebrew::TestCase + def setup + @name = "foo" + @core_path = HOMEBREW_PREFIX/"Library/Formula/#{@name}.rb" + @tap = Tap.new "homebrew", "foo" + @tap_path = @tap.path/"#{@name}.rb" + code = <<-EOS.undent + class #{Formulary.class_s(@name)} < Formula + url "foo-1.0" + end + EOS + @core_path.write code + @tap_path.write code + end + + def teardown + @core_path.unlink + @tap.path.parent.parent.rmtree + end + + def test_find_with_priority_core_formula + formula = Formulary.find_with_priority(@name) + assert_kind_of Formula, formula + assert_equal @core_path, formula.path + end + + def test_find_with_priority_tap_formula + @tap.pin + formula = shutup { Formulary.find_with_priority(@name) } + assert_kind_of Formula, formula + assert_equal @tap_path.realpath, formula.path + ensure + @tap.pinned_symlink_path.parent.parent.rmtree + end +end diff --git a/Library/Homebrew/test/testball_bottle.rb b/Library/Homebrew/test/testball_bottle.rb index 27ffd972aa..4027a0df17 100644 --- a/Library/Homebrew/test/testball_bottle.rb +++ b/Library/Homebrew/test/testball_bottle.rb @@ -6,9 +6,7 @@ class TestballBottle < Formula stable.bottle do cellar :any_skip_relocation root_url "file://#{File.expand_path("..", __FILE__)}/bottles" - sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => :yosemite - sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => :mavericks - sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => :mountain_lion + sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => bottle_tag end cxxstdlib_check :skip end