aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/formulary_test.rb
diff options
context:
space:
mode:
authorMarkus Reiter2016-11-13 22:00:15 +0100
committerMarkus Reiter2016-11-16 23:52:38 +0100
commit7457af2b231528e1287281f6cfe651600d5f3f5d (patch)
tree0da872ad2906fad53f176e05056181e0c6ccceaa /Library/Homebrew/test/formulary_test.rb
parent9dc1f8f3cd405bc299eb688075687f951afd3e13 (diff)
downloadbrew-7457af2b231528e1287281f6cfe651600d5f3f5d.tar.bz2
Move test files back directly to `test/`.
Diffstat (limited to 'Library/Homebrew/test/formulary_test.rb')
-rw-r--r--Library/Homebrew/test/formulary_test.rb208
1 files changed, 208 insertions, 0 deletions
diff --git a/Library/Homebrew/test/formulary_test.rb b/Library/Homebrew/test/formulary_test.rb
new file mode 100644
index 000000000..3d88c8407
--- /dev/null
+++ b/Library/Homebrew/test/formulary_test.rb
@@ -0,0 +1,208 @@
+require "testing_env"
+require "formula"
+require "formula_installer"
+require "utils/bottles"
+
+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")
+ assert_equal "OpensslAT11", Formulary.class_s("openssl@1.1")
+ end
+end
+
+class FormularyFactoryTest < Homebrew::TestCase
+ def setup
+ @name = "testball_bottle"
+ @path = CoreTap.new.formula_dir/"#{@name}.rb"
+ @bottle_dir = Pathname.new("#{TEST_FIXTURE_DIR}/bottles")
+ @bottle = @bottle_dir/"testball_bottle-0.1.#{Utils::Bottles.tag}.bottle.tar.gz"
+ @path.write <<-EOS.undent
+ class #{Formulary.class_s(@name)} < Formula
+ url "file://#{TEST_FIXTURE_DIR}/tarballs/testball-0.1.tbz"
+ sha256 TESTBALL_SHA256
+
+ bottle do
+ cellar :any_skip_relocation
+ root_url "file://#{@bottle_dir}"
+ sha256 "9abc8ce779067e26556002c4ca6b9427b9874d25f0cafa7028e05b5c5c410cb4" => :#{Utils::Bottles.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/core/#{@name}")
+ end
+
+ def test_formula_unavailable_error
+ assert_raises(FormulaUnavailableError) { Formulary.factory("not_existed_formula") }
+ end
+
+ def test_formula_class_unavailable_error
+ name = "giraffe"
+ path = CoreTap.new.formula_dir/"#{name}.rb"
+ path.write "class Wrong#{Formulary.class_s(name)} < Formula\nend\n"
+
+ assert_raises(FormulaClassUnavailableError) { Formulary.factory(name) }
+ ensure
+ path.unlink
+ 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 = CoreTap.instance.alias_dir
+ alias_dir.mkpath
+ alias_path = alias_dir/"foo"
+ FileUtils.ln_s @path, alias_path
+ result = Formulary.factory("foo")
+ assert_kind_of Formula, result
+ assert_equal alias_path.to_s, result.alias_path
+ ensure
+ alias_dir.rmtree
+ end
+
+ def test_factory_from_rack_and_from_keg
+ formula = Formulary.factory(@path)
+ installer = FormulaInstaller.new(formula)
+ shutup { installer.install }
+ keg = Keg.new(formula.prefix)
+ f = Formulary.from_rack(formula.rack)
+ assert_kind_of Formula, f
+ assert_kind_of Tab, f.build
+ f = Formulary.from_keg(keg)
+ assert_kind_of Formula, f
+ assert_kind_of Tab, f.build
+ 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
+
+ def test_to_rack
+ assert_equal HOMEBREW_CELLAR/@name, Formulary.to_rack(@name)
+ (HOMEBREW_CELLAR/@name).mkpath
+ assert_equal HOMEBREW_CELLAR/@name, Formulary.to_rack(@name)
+ assert_raises(TapFormulaUnavailableError) { Formulary.to_rack("a/b/#{@name}") }
+ ensure
+ FileUtils.rm_rf HOMEBREW_CELLAR/@name
+ 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.rmtree
+ end
+
+ def test_factory_tap_formula
+ assert_kind_of Formula, Formulary.factory(@name)
+ end
+
+ def test_factory_tap_alias
+ alias_dir = @tap.path/"Aliases"
+ alias_dir.mkpath
+ FileUtils.ln_s @path, alias_dir/"bar"
+ assert_kind_of Formula, Formulary.factory("bar")
+ 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) }
+ ensure
+ another_tap.path.rmtree
+ end
+end
+
+class FormularyTapPriorityTest < Homebrew::TestCase
+ def setup
+ @name = "foo"
+ @core_path = CoreTap.new.formula_dir/"#{@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.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