Improve error message for local formula file installation attempts

Co-authored-by: MikeMcQuaid <125011+MikeMcQuaid@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-08-13 17:10:44 +01:00 committed by Mike McQuaid
parent 332af0d5ef
commit cfa7326620
No known key found for this signature in database
2 changed files with 18 additions and 4 deletions

View File

@ -616,9 +616,23 @@ module Formulary
return unless path.expand_path.exist?
return if Homebrew::EnvConfig.forbid_packages_from_paths? &&
!path.realpath.to_s.start_with?("#{HOMEBREW_CELLAR}/", "#{HOMEBREW_LIBRARY}/Taps/",
if Homebrew::EnvConfig.forbid_packages_from_paths?
path_realpath = path.realpath.to_s
unless path_realpath.start_with?("#{HOMEBREW_CELLAR}/", "#{HOMEBREW_LIBRARY}/Taps/",
"#{HOMEBREW_CACHE}/")
raise <<~WARNING if path_realpath.include?("/") || path_realpath.end_with?(".rb")
Rejecting formula at #{path_realpath} because it's not in a tap.
Homebrew requires formulae to be in a tap.
To create a tap, run e.g.
brew tap-new <user|org>/<repository>
To create a formula in a tap run e.g.
brew create <url> --tap=<user|org>/<repository>
WARNING
return
end
end
if (tap = Tap.from_path(path))
# Only treat symlinks in taps as aliases.

View File

@ -126,7 +126,7 @@ RSpec.describe Formulary do
described_class.factory(temp_formula_path)
ensure
temp_formula_path.unlink
end.to raise_error(FormulaUnavailableError)
end.to raise_error(RuntimeError, /Rejecting formula at/)
end
it "returns a Formula when given a URL", :needs_utils_curl do