From 49310667b4e6327d8276752a74fe480c1d7fb135 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Tue, 15 Nov 2016 21:56:42 +0000 Subject: [PATCH 1/2] Revert "uninstall: remove nil requireds/dependents" This reverts commit d7e72899e6f24dca5e02a734d5a4e64e39fc680e. --- Library/Homebrew/cmd/uninstall.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index c08b13dad9..5d02ebd1e8 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -102,8 +102,8 @@ module Homebrew attr_reader :reqs, :deps def initialize(requireds, dependents) - @reqs = requireds.compact - @deps = dependents.compact + @reqs = requireds + @deps = dependents end protected From fb920668c880778d9f539d9371ef12283e117903 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 31 Dec 2016 13:03:08 +0000 Subject: [PATCH 2/2] keg: don't return nil dependencies This is a proper fix to the problem addressed by #1510. The problem arises when f_kegs is nil, which can happen if the name and tap used to install a keg don't match the name and tap currently associated with its formula (i.e. if it's been renamed or moved). --- Library/Homebrew/keg.rb | 2 +- Library/Homebrew/test/keg_test.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 756b272885..b5e6bd81d1 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -119,7 +119,7 @@ class Keg next unless f_kegs f_kegs.sort_by(&:version).last - end + end.compact next unless required_kegs.any? diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb index 4fe7c6a3cf..adb30164e2 100644 --- a/Library/Homebrew/test/keg_test.rb +++ b/Library/Homebrew/test/keg_test.rb @@ -369,6 +369,19 @@ class InstalledDependantsTests < LinkTestCase assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg]) end + def test_a_dependency_with_no_tap_in_tab + @tap_dep = setup_test_keg("baz", "1.0") + + alter_tab(@keg) { |t| t.source["tap"] = nil } + + dependencies nil + Formula["bar"].class.depends_on "foo" + Formula["bar"].class.depends_on "baz" + + result = Keg.find_some_installed_dependents([@keg, @tap_dep]) + assert_equal [[@tap_dep], ["bar"]], result + end + def test_no_dependencies_anywhere dependencies nil assert_empty @keg.installed_dependents