Merge pull request #5114 from MikeMcQuaid/github-validation-error
utils/github: add ValidationFailedError.
This commit is contained in:
commit
60042a9c7f
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user