diff options
| author | Markus Reiter | 2016-11-13 22:00:15 +0100 |
|---|---|---|
| committer | Markus Reiter | 2016-11-16 23:52:38 +0100 |
| commit | 7457af2b231528e1287281f6cfe651600d5f3f5d (patch) | |
| tree | 0da872ad2906fad53f176e05056181e0c6ccceaa /Library/Homebrew/test/formulary_test.rb | |
| parent | 9dc1f8f3cd405bc299eb688075687f951afd3e13 (diff) | |
| download | brew-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.rb | 208 |
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 |
