github: produce better curl error messages. (#441)
* global: add RUBY_TWO global variable. * test-bot: use RUBY_TWO global variable. * github: produce better curl error messages. If we don't know why curl has failed then ensure that the error messages that it produced are included as part of the user output.
This commit is contained in:
parent
ed1d1e51da
commit
23306ab434
@ -647,11 +647,9 @@ module Homebrew
|
||||
@category = __method__
|
||||
return if @skip_homebrew
|
||||
|
||||
ruby_two = RUBY_VERSION.split(".").first.to_i >= 2
|
||||
|
||||
if @tap.nil?
|
||||
tests_args = []
|
||||
if ruby_two
|
||||
if RUBY_TWO
|
||||
tests_args << "--official-cmd-taps"
|
||||
tests_args << "--coverage" if ENV["TRAVIS"]
|
||||
end
|
||||
@ -892,7 +890,7 @@ module Homebrew
|
||||
|
||||
ENV["HOMEBREW_DEVELOPER"] = "1"
|
||||
ENV["HOMEBREW_SANDBOX"] = "1"
|
||||
ENV["HOMEBREW_RUBY_MACHO"] = "1" if RUBY_VERSION.split(".").first.to_i >= 2
|
||||
ENV["HOMEBREW_RUBY_MACHO"] = "1" if RUBY_TWO
|
||||
ENV["HOMEBREW_NO_EMOJI"] = "1"
|
||||
ENV["HOMEBREW_FAIL_LOG_LINES"] = "150"
|
||||
ENV["HOMEBREW_EXPERIMENTAL_FILTER_FLAGS_ON_DEPS"] = "1"
|
||||
|
||||
@ -30,6 +30,7 @@ else
|
||||
)
|
||||
end
|
||||
RUBY_BIN = RUBY_PATH.dirname
|
||||
RUBY_TWO = RUBY_VERSION.split(".").first.to_i >= 2
|
||||
|
||||
HOMEBREW_USER_AGENT_CURL = ENV["HOMEBREW_USER_AGENT_CURL"]
|
||||
HOMEBREW_USER_AGENT_RUBY = "#{ENV["HOMEBREW_USER_AGENT"]} ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
require "pathname"
|
||||
require "open3"
|
||||
|
||||
def curl_args(extra_args=[])
|
||||
curl = Pathname.new ENV["HOMEBREW_CURL"]
|
||||
@ -19,6 +20,15 @@ def curl(*args)
|
||||
end
|
||||
|
||||
def curl_output(*args)
|
||||
curl_args = curl_args(args) - ["--fail"]
|
||||
Utils.popen_read_text(*curl_args)
|
||||
curl_args = curl_args(args)
|
||||
curl_args -= ["--fail"]
|
||||
if RUBY_TWO
|
||||
curl_args -= ["--silent"]
|
||||
Open3.popen3(*curl_args) do |_, stdout, stderr, wait_thread|
|
||||
[stdout.read, stderr.read, wait_thread.value]
|
||||
end
|
||||
else
|
||||
output = Utils.popen_read_text(*curl_args)
|
||||
[output, nil, $?]
|
||||
end
|
||||
end
|
||||
|
||||
@ -146,7 +146,8 @@ module GitHub
|
||||
|
||||
args += ["--dump-header", "#{headers_tmpfile.path}"]
|
||||
|
||||
output, _, http_code = curl_output(url.to_s, *args).rpartition("\n")
|
||||
output, errors, status = curl_output(url.to_s, *args)
|
||||
output, _, http_code = output.rpartition("\n")
|
||||
output, _, http_code = output.rpartition("\n") if http_code == "000"
|
||||
headers = headers_tmpfile.read
|
||||
ensure
|
||||
@ -159,8 +160,8 @@ module GitHub
|
||||
end
|
||||
|
||||
begin
|
||||
if !http_code.start_with?("2") && !$?.success?
|
||||
raise_api_error(output, http_code, headers)
|
||||
if !http_code.start_with?("2") && !status.success?
|
||||
raise_api_error(output, errors, http_code, headers)
|
||||
end
|
||||
json = Utils::JSON.load output
|
||||
if block_given?
|
||||
@ -173,7 +174,7 @@ module GitHub
|
||||
end
|
||||
end
|
||||
|
||||
def raise_api_error(output, http_code, headers)
|
||||
def raise_api_error(output, errors, http_code, headers)
|
||||
meta = {}
|
||||
headers.lines.each do |l|
|
||||
key, _, value = l.delete(":").partition(" ")
|
||||
@ -197,7 +198,7 @@ module GitHub
|
||||
raise HTTPNotFoundError, output
|
||||
else
|
||||
error = Utils::JSON.load(output)["message"] rescue nil
|
||||
error ||= output
|
||||
error ||= "curl failed! #{errors}"
|
||||
raise Error, error
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user