aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/dev-cmd/audit.rb42
-rw-r--r--Library/Homebrew/development_tools.rb4
-rw-r--r--Library/Homebrew/extend/os/mac/development_tools.rb5
3 files changed, 38 insertions, 13 deletions
diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb
index 757cc0df4..74ba987f6 100644
--- a/Library/Homebrew/dev-cmd/audit.rb
+++ b/Library/Homebrew/dev-cmd/audit.rb
@@ -169,6 +169,33 @@ class FormulaAuditor
@specs = %w[stable devel head].map { |s| formula.send(s) }.compact
end
+ def url_status_code(url, range: false)
+ # The system Curl is too old and unreliable with HTTPS homepages on
+ # Yosemite and below.
+ return "200" unless DevelopmentTools.curl_handles_most_https_homepages?
+
+ extra_args = [
+ "--connect-timeout", "15",
+ "--output", "/dev/null",
+ "--write-out", "%{http_code}"
+ ]
+ extra_args << "--range" << "0-0" if range
+ extra_args << url
+
+ args = curl_args(
+ extra_args: extra_args,
+ show_output: true,
+ default_user_agent: true
+ )
+ retries = 3
+ status_code = nil
+ retries.times do
+ status_code = Open3.popen3(*args) { |_, stdout, _, _| stdout.read }
+ break if status_code.start_with? "20"
+ end
+ status_code
+ end
+
def audit_style
return unless @style_offenses
display_cop_names = ARGV.include?("--display-cop-names")
@@ -570,19 +597,8 @@ class FormulaAuditor
return unless @online
- # The system Curl is too old and unreliable with HTTPS homepages on
- # Yosemite and below.
- return unless MacOS.version >= :el_capitan
-
- retries = 3
- retries.times do
- status_code, = curl_output "--connect-timeout", "15",
- "--output", "/dev/null",
- "--range", "0-0",
- "--write-out", "%{http_code}",
- homepage
- return if status_code.start_with? "20"
- end
+ status_code = url_status_code(homepage)
+ return if status_code.start_with? "20"
problem "The homepage #{homepage} is not reachable (HTTP status code #{status_code})"
end
diff --git a/Library/Homebrew/development_tools.rb b/Library/Homebrew/development_tools.rb
index bee2b86de..0a2f12729 100644
--- a/Library/Homebrew/development_tools.rb
+++ b/Library/Homebrew/development_tools.rb
@@ -119,6 +119,10 @@ class DevelopmentTools
@clang_version = @clang_build_version = nil
@non_apple_gcc_version = {}
end
+
+ def curl_handles_most_https_homepages?
+ true
+ end
end
end
diff --git a/Library/Homebrew/extend/os/mac/development_tools.rb b/Library/Homebrew/extend/os/mac/development_tools.rb
index 381b26e66..8c0c48a51 100644
--- a/Library/Homebrew/extend/os/mac/development_tools.rb
+++ b/Library/Homebrew/extend/os/mac/development_tools.rb
@@ -76,5 +76,10 @@ class DevelopmentTools
end
end
end
+
+ def curl_handles_most_https_homepages?
+ # The system Curl is too old for some modern HTTPS homepages on Yosemite.
+ MacOS.version >= :el_capitan
+ end
end
end