diff options
| author | Mike McQuaid | 2016-07-12 19:46:29 +0100 |
|---|---|---|
| committer | GitHub | 2016-07-12 19:46:29 +0100 |
| commit | 23306ab434afc185e22a0f357a27e8da687620af (patch) | |
| tree | dcf29ed5354a34f609b1250d6f7c4ea81c5cbf12 /Library | |
| parent | ed1d1e51da6bf464d6e461f5214e49f17b1f1842 (diff) | |
| download | brew-23306ab434afc185e22a0f357a27e8da687620af.tar.bz2 | |
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.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/dev-cmd/test-bot.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/global.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/utils/curl.rb | 14 | ||||
| -rw-r--r-- | Library/Homebrew/utils/github.rb | 11 |
4 files changed, 21 insertions, 11 deletions
diff --git a/Library/Homebrew/dev-cmd/test-bot.rb b/Library/Homebrew/dev-cmd/test-bot.rb index b09d2608a..40e99f7b6 100644 --- a/Library/Homebrew/dev-cmd/test-bot.rb +++ b/Library/Homebrew/dev-cmd/test-bot.rb @@ -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" diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 25f2d42f0..9554dd536 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -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}" diff --git a/Library/Homebrew/utils/curl.rb b/Library/Homebrew/utils/curl.rb index a1653d46c..db3534542 100644 --- a/Library/Homebrew/utils/curl.rb +++ b/Library/Homebrew/utils/curl.rb @@ -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 diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 36f6257f7..c5dbedd6c 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -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 |
