update-test: more improvements.

- Explain why `HOMEBREW_UPDATE_TEST` is set and what it does.
- Avoid auto-updating (this should already be not happening but let's
  make sure).
- Set environment variables to ensure we're testing the default update
  behaviour (rather than deferring to user configuration).
- Use `HOMEBREW_BREW_GIT_REMOTE` as well as setting
  `git config remote.origin.url` ourselves.
- Run `brew help` quietly first to hide irrelevant portable Ruby output.
- Run `brew update --verbose --debug` to get even more output on
  failure.

Fixes https://github.com/Homebrew/brew/issues/8979
This commit is contained in:
Mike McQuaid 2020-11-04 12:13:49 +00:00
parent 18e19df9b8
commit 878cbb634f
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70

View File

@ -30,12 +30,24 @@ module Homebrew
def update_test
args = update_test_args.parse
# Avoid `update-report.rb` tapping Homebrew/homebrew-core
ENV["HOMEBREW_UPDATE_TEST"] = "1"
# Avoid accidentally updating when we don't expect it.
ENV["HOMEBREW_NO_AUTO_UPDATE"] = "1"
# Use default behaviours
ENV["HOMEBREW_AUTO_UPDATE_SECS"] = nil
ENV["HOMEBREW_DEVELOPER"] = nil
ENV["HOMEBREW_DEV_CMD_RUN"] = nil
ENV["HOMEBREW_MERGE"] = nil
ENV["HOMEBREW_NO_UPDATE_CLEANUP"] = nil
branch = if args.to_tag?
ENV["HOMEBREW_UPDATE_TO_TAG"] = "1"
"stable"
else
ENV["HOMEBREW_UPDATE_TO_TAG"] = nil
"master"
end
@ -98,6 +110,7 @@ module Homebrew
safe_system "git", "clone", "#{HOMEBREW_REPOSITORY}/.git", "remote.git",
"--bare", "--branch", "master", "--single-branch"
safe_system "git", "config", "remote.origin.url", "#{curdir}/remote.git"
ENV["HOMEBREW_BREW_GIT_REMOTE"] = "#{curdir}/remote.git"
# force push origin to end_commit
safe_system "git", "checkout", "-B", "master", end_commit
@ -109,9 +122,12 @@ module Homebrew
# update ENV["PATH"]
ENV["PATH"] = PATH.new(ENV["PATH"]).prepend(curdir/"bin")
# run brew help to install portable-ruby (if needed)
quiet_system "brew", "help"
# run brew update
oh1 "Running brew update..."
safe_system "brew", "update", "--verbose"
safe_system "brew", "update", "--verbose", "--debug"
actual_end_commit = Utils.popen_read("git", "rev-parse", branch).chomp
if actual_end_commit != end_commit
start_log = Utils.popen_read("git", "log", "-1", "--decorate", "--oneline", start_commit).chomp