aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorAlyssa Ross2016-12-31 13:03:08 +0000
committerAlyssa Ross2016-12-31 14:16:38 +0000
commitfb920668c880778d9f539d9371ef12283e117903 (patch)
treecf4f1fd1256f580a15dec90a01e8b3e6d8877d3f /Library
parent49310667b4e6327d8276752a74fe480c1d7fb135 (diff)
downloadbrew-fb920668c880778d9f539d9371ef12283e117903.tar.bz2
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).
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/keg.rb2
-rw-r--r--Library/Homebrew/test/keg_test.rb13
2 files changed, 14 insertions, 1 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 756b27288..b5e6bd81d 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 4fe7c6a3c..adb30164e 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