aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-07-12 19:46:29 +0100
committerGitHub2016-07-12 19:46:29 +0100
commit23306ab434afc185e22a0f357a27e8da687620af (patch)
treedcf29ed5354a34f609b1250d6f7c4ea81c5cbf12 /Library
parented1d1e51da6bf464d6e461f5214e49f17b1f1842 (diff)
downloadbrew-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.rb6
-rw-r--r--Library/Homebrew/global.rb1
-rw-r--r--Library/Homebrew/utils/curl.rb14
-rw-r--r--Library/Homebrew/utils/github.rb11
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