From 34e03532a02318b5e9b43fba7e73890c6e403062 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 26 Jan 2017 16:19:38 +0000 Subject: [PATCH] audit: improve homepage audit reliability. Try first with an (exact, actual) browser user agent from Safari and then try again with the default Homebrew `curl` user agent. --- Library/Homebrew/dev-cmd/audit.rb | 17 ++++++++--------- Library/Homebrew/global.rb | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 5b01021305..b5dc4ecb18 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -169,7 +169,7 @@ class FormulaAuditor @specs = %w[stable devel head].map { |s| formula.send(s) }.compact end - def url_status_code(url, range: false, user_agent: :default) + 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? @@ -182,14 +182,13 @@ class FormulaAuditor extra_args << "--range" << "0-0" if range extra_args << url - args = curl_args( - extra_args: extra_args, - show_output: true, - user_agent: user_agent - ) - retries = 3 status_code = nil - retries.times do + [:browser, :default].each do |user_agent| + args = curl_args( + extra_args: extra_args, + show_output: true, + user_agent: user_agent + ) status_code = Open3.popen3(*args) { |_, stdout, _, _| stdout.read } break if status_code.start_with? "20" end @@ -609,7 +608,7 @@ class FormulaAuditor return unless @online - status_code = url_status_code(homepage, user_agent: :browser) + 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/global.rb b/Library/Homebrew/global.rb index 0311784212..5fd3569092 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -26,7 +26,7 @@ RUBY_BIN = RUBY_PATH.dirname HOMEBREW_USER_AGENT_CURL = ENV["HOMEBREW_USER_AGENT_CURL"] HOMEBREW_USER_AGENT_RUBY = "#{ENV["HOMEBREW_USER_AGENT"]} ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}".freeze -HOMEBREW_USER_AGENT_FAKE_SAFARI = "Mozilla/5.0 (#{ENV["HOMEBREW_SYSTEM"]}; #{ENV["HOMEBREW_PROCESSOR"]} #{ENV["HOMEBREW_OS_VERSION"]}) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0.2 Safari/602.3.12".freeze +HOMEBREW_USER_AGENT_FAKE_SAFARI = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) Version/10.0.3 Safari/602.4.8".freeze require "tap_constants"