mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
keg: update installed dependency resolution
Closes #1525. (See there for a motivation for this change.)
This commit is contained in:
parent
81b40f6564
commit
05b85a7bef
@ -385,6 +385,7 @@ class Keg
|
||||
end
|
||||
|
||||
def installed_dependents
|
||||
return [] unless linked?
|
||||
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
|
||||
|
@ -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,11 @@ class InstalledDependantsTests < LinkTestCase
|
||||
assert_empty @keg.installed_dependents
|
||||
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
|
||||
end
|
||||
|
||||
def test_unlinked
|
||||
@keg.unlink
|
||||
dependencies [{ "full_name" => "foo", "version" => "1.0" }]
|
||||
assert_empty @keg.installed_dependents
|
||||
assert_nil Keg.find_some_installed_dependents([@keg])
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user