diff options
| author | Alyssa Ross | 2016-12-30 17:41:57 +0000 |
|---|---|---|
| committer | Alyssa Ross | 2016-12-30 18:41:14 +0000 |
| commit | 01e1f7d49e91b6f02037997ffb465b37d2426b80 (patch) | |
| tree | 194bad53fa0d57943ecdb6a9170b6a90af37ca87 /Library/Homebrew | |
| parent | e2689a697cd892910fd9bbdbae38d1dd67cf426b (diff) | |
| download | brew-01e1f7d49e91b6f02037997ffb465b37d2426b80.tar.bz2 | |
keg: fix fallback dependencies with multiple kegs
Fixes #1524.
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/keg.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/test/keg_test.rb | 7 |
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 |
