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 | |
| 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.
| -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 | 
