Merge pull request #10069 from samford/curl-add-debug-retry_request_parameters

Curl: Add optional debug and retry parameters
This commit is contained in:
Markus Reiter 2020-12-20 01:32:10 +01:00 committed by GitHub
commit 24046c3182
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 14 deletions

View File

@ -3,25 +3,61 @@
require "utils/curl" require "utils/curl"
describe "curl" do describe "Utils::Curl" do
describe "curl_args" do describe "curl_args" do
let(:args) { "foo" }
let(:user_agent_string) { "Lorem ipsum dolor sit amet" }
it "returns --disable as the first argument when HOMEBREW_CURLRC is not set" do it "returns --disable as the first argument when HOMEBREW_CURLRC is not set" do
# --disable must be the first argument according to "man curl" # --disable must be the first argument according to "man curl"
expect(curl_args("foo").first).to eq("--disable") expect(curl_args(*args).first).to eq("--disable")
end end
it "doesn't return --disable as the first argument when HOMEBREW_CURLRC is set" do it "doesn't return `--disable` as the first argument when HOMEBREW_CURLRC is set" do
ENV["HOMEBREW_CURLRC"] = "1" ENV["HOMEBREW_CURLRC"] = "1"
expect(curl_args("foo").first).not_to eq("--disable") expect(curl_args(*args).first).not_to eq("--disable")
end end
it "uses `--retry 3` when HOMEBREW_CURL_RETRIES is unset" do it "uses `--retry 3` when HOMEBREW_CURL_RETRIES is unset" do
expect(curl_args("foo").join(" ")).to include("--retry 3") expect(curl_args(*args).join(" ")).to include("--retry 3")
end end
it "uses the given value for `--retry` when HOMEBREW_CURL_RETRIES is set" do it "uses the given value for `--retry` when HOMEBREW_CURL_RETRIES is set" do
ENV["HOMEBREW_CURL_RETRIES"] = "10" ENV["HOMEBREW_CURL_RETRIES"] = "10"
expect(curl_args("foo").join(" ")).to include("--retry 10") expect(curl_args(*args).join(" ")).to include("--retry 10")
end
it "doesn't use `--retry` when `:retry` == `false`" do
expect(curl_args(*args, retry: false).join(" ")).not_to include("--retry")
end
it "uses `--retry 3` when `:retry` == `true`" do
expect(curl_args(*args, retry: true).join(" ")).to include("--retry 3")
end
it "uses HOMEBREW_USER_AGENT_FAKE_SAFARI when `:user_agent` is `:browser` or `:fake`" do
expect(curl_args(*args, user_agent: :browser).join(" "))
.to include("--user-agent #{HOMEBREW_USER_AGENT_FAKE_SAFARI}")
expect(curl_args(*args, user_agent: :fake).join(" "))
.to include("--user-agent #{HOMEBREW_USER_AGENT_FAKE_SAFARI}")
end
it "uses HOMEBREW_USER_AGENT_CURL when `:user_agent` is `:default` or omitted" do
expect(curl_args(*args, user_agent: :default).join(" ")).to include("--user-agent #{HOMEBREW_USER_AGENT_CURL}")
expect(curl_args(*args, user_agent: nil).join(" ")).to include("--user-agent #{HOMEBREW_USER_AGENT_CURL}")
expect(curl_args(*args).join(" ")).to include("--user-agent #{HOMEBREW_USER_AGENT_CURL}")
end
it "uses provided user agent string when `:user_agent` is a `String`" do
expect(curl_args(*args, user_agent: user_agent_string).join(" "))
.to include("--user-agent #{user_agent_string}")
end
it "uses `--fail` unless `:show_output` is `true`" do
expect(curl_args(*args, show_output: false).join(" ")).to include("--fail")
expect(curl_args(*args, show_output: nil).join(" ")).to include("--fail")
expect(curl_args(*args).join(" ")).to include("--fail")
expect(curl_args(*args, show_output: true).join(" ")).not_to include("--fail")
end end
end end
end end

View File

@ -21,7 +21,7 @@ module Utils
@curl @curl
end end
def curl_args(*extra_args, show_output: false, user_agent: :default) def curl_args(*extra_args, **options)
args = [] args = []
# do not load .curlrc unless requested (must be the first argument) # do not load .curlrc unless requested (must be the first argument)
@ -31,36 +31,37 @@ module Utils
args << "--show-error" args << "--show-error"
args << "--user-agent" << case user_agent args << "--user-agent" << case options[:user_agent]
when :browser, :fake when :browser, :fake
HOMEBREW_USER_AGENT_FAKE_SAFARI HOMEBREW_USER_AGENT_FAKE_SAFARI
when :default when :default, nil
HOMEBREW_USER_AGENT_CURL HOMEBREW_USER_AGENT_CURL
else when String
user_agent options[:user_agent]
end end
args << "--header" << "Accept-Language: en" args << "--header" << "Accept-Language: en"
unless show_output unless options[:show_output] == true
args << "--fail" args << "--fail"
args << "--progress-bar" unless Context.current.verbose? args << "--progress-bar" unless Context.current.verbose?
args << "--verbose" if Homebrew::EnvConfig.curl_verbose? args << "--verbose" if Homebrew::EnvConfig.curl_verbose?
args << "--silent" unless $stdout.tty? args << "--silent" unless $stdout.tty?
end end
args << "--retry" << Homebrew::EnvConfig.curl_retries args << "--retry" << Homebrew::EnvConfig.curl_retries unless options[:retry] == false
args + extra_args args + extra_args
end end
def curl_with_workarounds( def curl_with_workarounds(
*args, secrets: nil, print_stdout: nil, print_stderr: nil, verbose: nil, env: {}, **options *args, secrets: nil, print_stdout: nil, print_stderr: nil, debug: nil, verbose: nil, env: {}, **options
) )
command_options = { command_options = {
secrets: secrets, secrets: secrets,
print_stdout: print_stdout, print_stdout: print_stdout,
print_stderr: print_stderr, print_stderr: print_stderr,
debug: debug,
verbose: verbose, verbose: verbose,
}.compact }.compact