diff options
| author | Vlad Shablinsky | 2016-09-05 23:33:37 +0300 |
|---|---|---|
| committer | Uladzislau Shablinski | 2016-09-07 20:58:13 +0300 |
| commit | f9b910eeb608bb8f2b7c9ed3beef86d5a5fe4da8 (patch) | |
| tree | b794493023708c31051b0342f68b100601035b99 /Library/Homebrew | |
| parent | 02a578d8421c3ae88d05e12e34c908ba4b18c877 (diff) | |
| download | brew-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.rb | 42 |
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 |
