aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-08-10 08:48:30 +0100
committerMike McQuaid2016-08-10 09:40:39 +0100
commitd0251c1abc3d63513c8b07647607e3a5654caedb (patch)
treeb235ac3aa8fc51e891d2945018cd3082df60b273 /Library
parentffd71d02e15d84a777b19bdc3183a64dfe162f9d (diff)
downloadbrew-d0251c1abc3d63513c8b07647607e3a5654caedb.tar.bz2
formulary: fix to_rack for fully-scoped references
Fixes the case where I have `mysql56` installed but do `brew uninstall foo/bar/mysql56` which isn't a valid formula. Fixes https://github.com/Homebrew/legacy-homebrew/issues/39883.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/formulary.rb7
-rw-r--r--Library/Homebrew/test/test_formulary.rb9
2 files changed, 14 insertions, 2 deletions
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index f7a4be817..9d385fc51 100644
--- a/Library/Homebrew/formulary.rb
+++ b/Library/Homebrew/formulary.rb
@@ -256,12 +256,15 @@ class Formulary
end
def self.to_rack(ref)
- # First, check whether the rack with the given name exists.
+ # If using a fully-scoped reference, check if the formula can be resolved.
+ factory(ref) if ref.include? "/"
+
+ # Check whether the rack with the given name exists.
if (rack = HOMEBREW_CELLAR/File.basename(ref, ".rb")).directory?
return rack.resolved_path
end
- # Second, use canonical name to locate rack.
+ # Use canonical name to locate rack.
(HOMEBREW_CELLAR/canonical_name(ref)).resolved_path
end
diff --git a/Library/Homebrew/test/test_formulary.rb b/Library/Homebrew/test/test_formulary.rb
index 7c7ad3e74..7a3ab65e0 100644
--- a/Library/Homebrew/test/test_formulary.rb
+++ b/Library/Homebrew/test/test_formulary.rb
@@ -111,6 +111,15 @@ class FormularyFactoryTest < Homebrew::TestCase
def test_load_from_contents
assert_kind_of Formula, Formulary.from_contents(@name, @path, @path.read)
end
+
+ def test_to_rack
+ assert_equal HOMEBREW_CELLAR/@name, Formulary.to_rack(@name)
+ (HOMEBREW_CELLAR/@name).mkpath
+ assert_equal HOMEBREW_CELLAR/@name, Formulary.to_rack(@name)
+ assert_raises(TapFormulaUnavailableError) { Formulary.to_rack("a/b/#{@name}") }
+ ensure
+ FileUtils.rm_rf HOMEBREW_CELLAR/@name
+ end
end
class FormularyTapFactoryTest < Homebrew::TestCase