aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorVlad Shablinsky2016-09-05 23:33:37 +0300
committerUladzislau Shablinski2016-09-07 20:58:13 +0300
commitf9b910eeb608bb8f2b7c9ed3beef86d5a5fe4da8 (patch)
treeb794493023708c31051b0342f68b100601035b99 /Library/Homebrew
parent02a578d8421c3ae88d05e12e34c908ba4b18c877 (diff)
downloadbrew-f9b910eeb608bb8f2b7c9ed3beef86d5a5fe4da8.tar.bz2
FormulaInstaller#check_install_sanity test pinned
Forbid to install formual if it has pinned dependencies.
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/test/test_formula_installer.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_formula_installer.rb b/Library/Homebrew/test/test_formula_installer.rb
index 55b456fba..f519d0715 100644
--- a/Library/Homebrew/test/test_formula_installer.rb
+++ b/Library/Homebrew/test/test_formula_installer.rb
@@ -92,3 +92,45 @@ class InstallTests < Homebrew::TestCase
end
end
end
+
+class FormulaInstallerTests < Homebrew::TestCase
+ def test_check_install_sanity_pinned_dep
+ dep_name = "dependency"
+ dep_path = CoreTap.new.formula_dir/"#{dep_name}.rb"
+ dep_path.write <<-EOS.undent
+ class #{Formulary.class_s(dep_name)} < Formula
+ url "foo"
+ version "0.2"
+ end
+ EOS
+
+ Formulary::FORMULAE.delete(dep_path)
+ dependency = Formulary.factory(dep_name)
+
+ dependent = formula do
+ url "foo"
+ version "0.5"
+ depends_on "#{dependency.name}"
+ end
+
+ dependency.prefix("0.1").join("bin/a").mkpath
+ HOMEBREW_LIBRARY.join("PinnedKegs").mkpath
+ FileUtils.ln_s dependency.prefix("0.1"), HOMEBREW_LIBRARY.join("PinnedKegs/#{dep_name}")
+
+ dependency_keg = Keg.new(dependency.prefix("0.1"))
+ dependency_keg.link
+
+ assert_predicate dependency_keg, :linked?
+ assert_predicate dependency, :pinned?
+
+ fi = FormulaInstaller.new(dependent)
+ assert_raises(CannotInstallFormulaError) { fi.check_install_sanity }
+ ensure
+ dependency.unpin
+ dependency_keg.unlink
+ dependency_keg.uninstall
+ dependency.clear_cache
+ dep_path.unlink
+ Formulary::FORMULAE.delete(dep_path)
+ end
+end