Skip to content
Snippets Groups Projects
Commit 5a5cbe41 authored by Mike McQuaid's avatar Mike McQuaid Committed by GitHub
Browse files

Merge pull request #1497 from alyssais/uninstall_keg_to_formula

keg: don't rely on #to_formula
parents fc3d5865 f7f72093
No related branches found
No related tags found
No related merge requests found
......@@ -109,13 +109,20 @@ class Keg
end
keg_names = kegs.map(&:name)
kegs_by_name = kegs.group_by(&:to_formula)
kegs_by_source = kegs.group_by { |k| [k.name, Tab.for_keg(k).tap] }
remaining_formulae.each do |dependent|
required = dependent.missing_dependencies(hide: keg_names)
required.select! { |f| kegs_by_name.key?(f) }
next unless required.any?
required_kegs = required.map { |f| kegs_by_name[f].sort_by(&:version).last }
required_kegs = required.map do |f|
f_kegs = kegs_by_source[[f.name, f.tap]]
next unless f_kegs
f_kegs.sort_by(&:version).last
end
next unless required_kegs.any?
return required_kegs, [dependent.to_s]
end
......
......@@ -317,12 +317,16 @@ end
class InstalledDependantsTests < LinkTests
def stub_formula_name(name)
stub_formula_loader formula(name) { url "foo-1.0" }
f = formula(name) { url "foo-1.0" }
stub_formula_loader f
stub_formula_loader f, "homebrew/core/#{f}"
f
end
def setup_test_keg(name, version)
stub_formula_name(name)
f = stub_formula_name(name)
keg = super
Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
Formula.clear_cache
keg
end
......@@ -345,6 +349,17 @@ class InstalledDependantsTests < LinkTests
end
end
# Test with a keg whose formula isn't known.
# This can happen if e.g. a formula is installed
# from a file path or URL.
def test_unknown_formula
Formulary.unstub(:loader_for)
dependencies []
alter_tab { |t| t.source["path"] = nil }
assert_empty @keg.installed_dependents
assert_nil Keg.find_some_installed_dependents([@keg])
end
def test_no_dependencies_anywhere
dependencies nil
assert_empty @keg.installed_dependents
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment