aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2017-01-01 18:26:04 +0000
committerGitHub2017-01-01 18:26:04 +0000
commit3e0d54d8b9be1507c61e7a862379d7c9ad31fb8a (patch)
tree726872fff252129233d6a44517c7e109f1e8f3b4 /Library
parent81b40f6564a26814acab5ec9cf353fd677734f5d (diff)
parente1d7d44e5a13d16bc7773a7afb09c1a789878f5a (diff)
downloadbrew-3e0d54d8b9be1507c61e7a862379d7c9ad31fb8a.tar.bz2
Merge pull request #1527 from alyssais/installed_dependencies
keg: update installed dependency resolution
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/keg.rb7
-rw-r--r--Library/Homebrew/test/keg_test.rb20
-rw-r--r--Library/Homebrew/test/uninstall_test.rb10
3 files changed, 29 insertions, 8 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 74fd88c2e..f3aab7f97 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -385,6 +385,7 @@ class Keg
end
def installed_dependents
+ return [] unless optlinked?
tap = Tab.for_keg(self).source["tap"]
Keg.all.select do |keg|
tab = Tab.for_keg(keg)
@@ -394,12 +395,10 @@ class Keg
# in case of conflicts between formulae from different taps.
begin
dep_formula = Formulary.factory(dep["full_name"])
- next false unless dep_formula == to_formula
+ dep_formula == to_formula
rescue FormulaUnavailableError
- next false unless "#{tap}/#{name}" == dep["full_name"]
+ next "#{tap}/#{name}" == dep["full_name"]
end
-
- dep["version"] == version.to_s
end
end
end
diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb
index 660ccd882..40b47b5e9 100644
--- a/Library/Homebrew/test/keg_test.rb
+++ b/Library/Homebrew/test/keg_test.rb
@@ -340,6 +340,7 @@ class InstalledDependantsTests < LinkTestCase
def setup
super
@dependent = setup_test_keg("bar", "1.0")
+ @keg.link
end
def alter_tab(keg = @dependent)
@@ -442,8 +443,8 @@ class InstalledDependantsTests < LinkTestCase
def test_same_name_different_version_in_tab
dependencies [{ "full_name" => "foo", "version" => "1.1" }]
- assert_empty @keg.installed_dependents
- assert_nil Keg.find_some_installed_dependents([@keg])
+ assert_equal [@dependent], @keg.installed_dependents
+ assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg])
end
def test_different_name_same_version_in_tab
@@ -465,4 +466,19 @@ class InstalledDependantsTests < LinkTestCase
assert_empty @keg.installed_dependents
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
end
+
+ def test_nonoptlinked
+ @keg.remove_opt_record
+ dependencies [{ "full_name" => "foo", "version" => "1.0" }]
+ assert_empty @keg.installed_dependents
+ assert_nil Keg.find_some_installed_dependents([@keg])
+ end
+
+ def test_keg_only
+ @keg.unlink
+ Formula["foo"].class.keg_only "a good reason"
+ dependencies [{ "full_name" => "foo", "version" => "1.1" }] # different version
+ assert_equal [@dependent], @keg.installed_dependents
+ assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg])
+ end
end
diff --git a/Library/Homebrew/test/uninstall_test.rb b/Library/Homebrew/test/uninstall_test.rb
index e7849178b..597e77e40 100644
--- a/Library/Homebrew/test/uninstall_test.rb
+++ b/Library/Homebrew/test/uninstall_test.rb
@@ -9,7 +9,10 @@ class UninstallTests < Homebrew::TestCase
depends_on "dependency"
end
- [@dependency, @dependent].each { |f| f.installed_prefix.mkpath }
+ [@dependency, @dependent].each do |f|
+ f.installed_prefix.mkpath
+ Keg.new(f.installed_prefix).optlink
+ end
tab = Tab.empty
tab.homebrew_version = "1.1.6"
@@ -25,7 +28,10 @@ class UninstallTests < Homebrew::TestCase
def teardown
Homebrew.failed = false
- [@dependency, @dependent].each { |f| f.rack.rmtree }
+ [@dependency, @dependent].each do |f|
+ f.installed_kegs.each(&:remove_opt_record)
+ f.rack.rmtree
+ end
end
def handle_unsatisfied_dependents