aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorXu Cheng2015-09-06 20:47:40 +0800
committerXu Cheng2015-09-06 20:47:40 +0800
commitccc7a5f1bd021a28694bd2f742020316631f28ca (patch)
treeaf913511f60a751ed556cbe1a800a6232f2b136f /Library/Homebrew
parentee1dd24b1978c47c6cc7e374fdcf770f52f0ae40 (diff)
downloadbrew-ccc7a5f1bd021a28694bd2f742020316631f28ca.tar.bz2
add test_formulary
Closes Homebrew/homebrew#43506. Signed-off-by: Xu Cheng <xucheng@me.com>
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/test/test_formula.rb40
-rw-r--r--Library/Homebrew/test/test_formula_installer_bottle.rb4
-rw-r--r--Library/Homebrew/test/test_formulary.rb168
-rw-r--r--Library/Homebrew/test/testball_bottle.rb4
4 files changed, 170 insertions, 46 deletions
diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb
index 24cf30e2b..4d198ba28 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 61ed78b19..0f9bdfb5e 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 000000000..d622a8ccf
--- /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 27ffd972a..4027a0df1 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