aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/keg.rb8
-rw-r--r--Library/Homebrew/test/keg_test.rb7
2 files changed, 14 insertions, 1 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 756b27288..43e2cbc4f 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -105,7 +105,13 @@ class Keg
#
# This happens after the initial dependency check because it's sloooow.
remaining_formulae = Formula.installed.select do |f|
- f.installed_kegs.any? { |k| Tab.for_keg(k).runtime_dependencies.nil? }
+ installed_kegs = f.installed_kegs
+
+ # All installed kegs are going to be removed anyway,
+ # so it doesn't matter what they depend on.
+ next false if (installed_kegs - kegs).empty?
+
+ installed_kegs.any? { |k| Tab.for_keg(k).runtime_dependencies.nil? }
end
keg_names = kegs.map(&:name)
diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb
index 4fe7c6a3c..14cdc4304 100644
--- a/Library/Homebrew/test/keg_test.rb
+++ b/Library/Homebrew/test/keg_test.rb
@@ -382,6 +382,13 @@ class InstalledDependantsTests < LinkTestCase
assert_equal [[@keg], ["bar"]], Keg.find_some_installed_dependents([@keg])
end
+ def test_uninstalling_dependent_and_dependency
+ dependencies nil
+ Formula["bar"].class.depends_on "foo"
+ assert_empty @keg.installed_dependents
+ assert_nil Keg.find_some_installed_dependents([@keg, @dependent])
+ end
+
def test_empty_dependencies_in_tab
dependencies []
assert_empty @keg.installed_dependents