diff options
| author | Mike McQuaid | 2016-12-30 20:17:34 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2016-12-30 20:17:34 +0000 |
| commit | b3c6334d3cde6d653427ae29892e3a14af9c5bd9 (patch) | |
| tree | 6921417eb3b361213f9385c48d092f71da49e7c0 /Library/Homebrew | |
| parent | e6fb3c3114ea842884a49c7f2ddfe1a9c4e3eee0 (diff) | |
| download | brew-b3c6334d3cde6d653427ae29892e3a14af9c5bd9.tar.bz2 | |
audit: use new curl_args form.
This will use Curl’s default user agent to reduce homepage errors and
provides a function that can be used for other audits to perform
similar tests on URLs.
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/dev-cmd/audit.rb | 42 | ||||
| -rw-r--r-- | Library/Homebrew/development_tools.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/mac/development_tools.rb | 5 |
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 |
