Merge pull request #5114 from MikeMcQuaid/github-validation-error

utils/github: add ValidationFailedError.
This commit is contained in:
Mike McQuaid 2018-10-15 20:25:21 -07:00 committed by GitHub
commit 60042a9c7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 3 deletions

View File

@ -31,9 +31,12 @@ describe GitHub do
describe "::search_issues", :needs_network do describe "::search_issues", :needs_network do
it "queries GitHub issues with the passed parameters" do it "queries GitHub issues with the passed parameters" do
results = subject.search_issues("brew search", repo: "Homebrew/brew", author: "avetamine", is: "closed") results = subject.search_issues("brew search",
repo: "Homebrew/legacy-homebrew",
author: "MikeMcQuaid",
is: "closed")
expect(results).not_to be_empty expect(results).not_to be_empty
expect(results.last["title"]).to eq("brew search : 422 Unprocessable Entity") expect(results.first["title"]).to eq("Shall we run `brew update` automatically?")
end end
end end
end end

View File

@ -45,7 +45,7 @@ module GitHub
class AuthenticationFailedError < Error class AuthenticationFailedError < Error
def initialize(github_message) def initialize(github_message)
@github_message = github_message @github_message = github_message
message = "GitHub #{github_message}\n" message = "GitHub #{github_message}:"
if ENV["HOMEBREW_GITHUB_API_TOKEN"] if ENV["HOMEBREW_GITHUB_API_TOKEN"]
message << <<~EOS message << <<~EOS
HOMEBREW_GITHUB_API_TOKEN may be invalid or expired; check: HOMEBREW_GITHUB_API_TOKEN may be invalid or expired; check:
@ -65,6 +65,18 @@ module GitHub
end end
end end
class ValidationFailedError < Error
def initialize(github_message, errors)
@github_message = if errors.empty?
github_message
else
"#{github_message}: #{errors}"
end
super(@github_message)
end
end
def api_credentials def api_credentials
@api_credentials ||= begin @api_credentials ||= begin
if ENV["HOMEBREW_GITHUB_API_TOKEN"] if ENV["HOMEBREW_GITHUB_API_TOKEN"]
@ -231,6 +243,9 @@ module GitHub
raise AuthenticationFailedError, message raise AuthenticationFailedError, message
when "404" when "404"
raise HTTPNotFoundError, message raise HTTPNotFoundError, message
when "422"
errors = json&.[]("errors") || []
raise ValidationFailedError.new(message, errors)
else else
raise Error, message raise Error, message
end end