From 8b30abe0600df5c9d3da5b4c31ca88a71a1c3e03 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 31 Dec 2016 13:14:27 +0000 Subject: keg: handle dependencies of moved/renamed formulae In #1497 I switched from Keg#to_formula for comparing kegs to formulae to comparing the name and tap in the keg's tab to the name and tap of the formula. However, this fails to match if the name and tap of the formula have changed since the keg was installed, so it's clearly better to use Keg#to_formula where possible, and fall back to the information in the tab when #to_formula can't be used. --- Library/Homebrew/test/keg_test.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'Library/Homebrew/test') diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb index 45d63aa95..40beac887 100644 --- a/Library/Homebrew/test/keg_test.rb +++ b/Library/Homebrew/test/keg_test.rb @@ -373,6 +373,7 @@ class InstalledDependantsTests < LinkTestCase t.source["tap"] = "some/tap" t.source["path"] = nil end + dependencies [{ "full_name" => "some/tap/foo", "version" => "1.0" }] assert_equal [@dependent], @keg.installed_dependents assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg]) @@ -388,7 +389,7 @@ class InstalledDependantsTests < LinkTestCase Formula["bar"].class.depends_on "baz" result = Keg.find_some_installed_dependents([@keg, @tap_dep]) - assert_equal [[@tap_dep], ["bar"]], result + assert_equal [[@keg, @tap_dep], ["bar"]], result end def test_no_dependencies_anywhere @@ -411,6 +412,23 @@ class InstalledDependantsTests < LinkTestCase assert_nil Keg.find_some_installed_dependents([@keg, @dependent]) end + def test_renamed_dependency + dependencies nil + + stub_formula_loader Formula["foo"], "homebrew/core/foo-old" + renamed_path = HOMEBREW_CELLAR/"foo-old" + (HOMEBREW_CELLAR/"foo").rename(renamed_path) + renamed_keg = Keg.new(renamed_path.join("1.0")) + + Formula["bar"].class.depends_on "foo" + + result = Keg.find_some_installed_dependents([renamed_keg]) + assert_equal [[renamed_keg], ["bar"]], result + ensure + # Move it back to where it was so it'll be cleaned up. + (HOMEBREW_CELLAR/"foo-old").rename(HOMEBREW_CELLAR/"foo") + end + def test_empty_dependencies_in_tab dependencies [] assert_empty @keg.installed_dependents -- cgit v1.2.3 From 524d9ce8f3b8553a62da7223a012b4e332bd02b3 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 31 Dec 2016 15:29:36 +0000 Subject: keg: test dep fallback with unknown formulae --- Library/Homebrew/test/keg_test.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Library/Homebrew/test') diff --git a/Library/Homebrew/test/keg_test.rb b/Library/Homebrew/test/keg_test.rb index 40beac887..660ccd882 100644 --- a/Library/Homebrew/test/keg_test.rb +++ b/Library/Homebrew/test/keg_test.rb @@ -377,6 +377,11 @@ class InstalledDependantsTests < LinkTestCase dependencies [{ "full_name" => "some/tap/foo", "version" => "1.0" }] assert_equal [@dependent], @keg.installed_dependents assert_equal [[@keg], ["bar 1.0"]], Keg.find_some_installed_dependents([@keg]) + + dependencies nil + # It doesn't make sense for a keg with no formula to have any dependents, + # so that can't really be tested. + assert_nil Keg.find_some_installed_dependents([@keg]) end def test_a_dependency_with_no_tap_in_tab -- cgit v1.2.3