Merge pull request #1527 from alyssais/installed_dependencies
keg: update installed dependency resolution
This commit is contained in:
commit
3e0d54d8b9
@ -385,6 +385,7 @@ class Keg
|
|||||||
end
|
end
|
||||||
|
|
||||||
def installed_dependents
|
def installed_dependents
|
||||||
|
return [] unless optlinked?
|
||||||
tap = Tab.for_keg(self).source["tap"]
|
tap = Tab.for_keg(self).source["tap"]
|
||||||
Keg.all.select do |keg|
|
Keg.all.select do |keg|
|
||||||
tab = Tab.for_keg(keg)
|
tab = Tab.for_keg(keg)
|
||||||
@ -394,12 +395,10 @@ class Keg
|
|||||||
# in case of conflicts between formulae from different taps.
|
# in case of conflicts between formulae from different taps.
|
||||||
begin
|
begin
|
||||||
dep_formula = Formulary.factory(dep["full_name"])
|
dep_formula = Formulary.factory(dep["full_name"])
|
||||||
next false unless dep_formula == to_formula
|
dep_formula == to_formula
|
||||||
rescue FormulaUnavailableError
|
rescue FormulaUnavailableError
|
||||||
next false unless "#{tap}/#{name}" == dep["full_name"]
|
next "#{tap}/#{name}" == dep["full_name"]
|
||||||
end
|
end
|
||||||
|
|
||||||
dep["version"] == version.to_s
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -340,6 +340,7 @@ class InstalledDependantsTests < LinkTestCase
|
|||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
@dependent = setup_test_keg("bar", "1.0")
|
@dependent = setup_test_keg("bar", "1.0")
|
||||||
|
@keg.link
|
||||||
end
|
end
|
||||||
|
|
||||||
def alter_tab(keg = @dependent)
|
def alter_tab(keg = @dependent)
|
||||||
@ -442,8 +443,8 @@ class InstalledDependantsTests < LinkTestCase
|
|||||||
|
|
||||||
def test_same_name_different_version_in_tab
|
def test_same_name_different_version_in_tab
|
||||||
dependencies [{ "full_name" => "foo", "version" => "1.1" }]
|
dependencies [{ "full_name" => "foo", "version" => "1.1" }]
|
||||||
assert_empty @keg.installed_dependents
|
assert_equal [@dependent], @keg.installed_dependents
|
||||||
assert_nil Keg.find_some_installed_dependents([@keg])
|
assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_different_name_same_version_in_tab
|
def test_different_name_same_version_in_tab
|
||||||
@ -465,4 +466,19 @@ class InstalledDependantsTests < LinkTestCase
|
|||||||
assert_empty @keg.installed_dependents
|
assert_empty @keg.installed_dependents
|
||||||
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
|
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@ -9,7 +9,10 @@ class UninstallTests < Homebrew::TestCase
|
|||||||
depends_on "dependency"
|
depends_on "dependency"
|
||||||
end
|
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 = Tab.empty
|
||||||
tab.homebrew_version = "1.1.6"
|
tab.homebrew_version = "1.1.6"
|
||||||
@ -25,7 +28,10 @@ class UninstallTests < Homebrew::TestCase
|
|||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
Homebrew.failed = false
|
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
|
end
|
||||||
|
|
||||||
def handle_unsatisfied_dependents
|
def handle_unsatisfied_dependents
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user