diff --git a/Library/Homebrew/livecheck/livecheck.rb b/Library/Homebrew/livecheck/livecheck.rb index 8056d787a9..6b87804cb0 100644 --- a/Library/Homebrew/livecheck/livecheck.rb +++ b/Library/Homebrew/livecheck/livecheck.rb @@ -102,8 +102,9 @@ module Homebrew latest = Version.new(m[1]) end - # A HEAD-only formula is outdated when the latest commit hash and installed commit hash differ is_outdated = if formula.head? + # A HEAD-only formula is considered outdated if the latest upstream + # commit hash is different than the installed version's commit hash (current != latest) else (current < latest) @@ -148,7 +149,7 @@ module Homebrew end end - if [args.newer_only?, !has_a_newer_upstream_version, !args.json?, !args.debug?].all? + if args.newer_only? && !has_a_newer_upstream_version && !args.debug? && !args.json? puts "No newer upstream versions." end @@ -167,7 +168,7 @@ module Homebrew formula: formula_name(formula, args: args), status: status_str, } - status_hash[:messages] = messages.presence + status_hash[:messages] = messages if messages.is_a?(Array) if args.verbose? status_hash[:meta] = { @@ -273,7 +274,7 @@ module Homebrew # @return [String] def preprocess_url(url) # Check for GitHub repos on github.com, not AWS - url.sub!("github.s3.amazonaws.com", "github.com") if url.include?("github") + url = url.sub("github.s3.amazonaws.com", "github.com") if url.include?("github") # Use repo from GitHub or GitLab inferred from download URL if url.include?("github.com") && GITHUB_SPECIAL_CASES.none? { |sc| url.include? sc } diff --git a/Library/Homebrew/test/livecheck/livecheck_spec.rb b/Library/Homebrew/test/livecheck/livecheck_spec.rb index 0d89a319ae..80bb2267ac 100644 --- a/Library/Homebrew/test/livecheck/livecheck_spec.rb +++ b/Library/Homebrew/test/livecheck/livecheck_spec.rb @@ -13,7 +13,7 @@ describe Homebrew::Livecheck do head "https://github.com/Homebrew/brew.git" livecheck do - url(+"https://github.s3.amazonaws.com/Homebrew/brew/releases/latest") + url "https://github.s3.amazonaws.com/Homebrew/brew/releases/latest" regex(%r{href=.*?/tag/v?(\d+(?:\.\d+)+)["' >]}i) end end @@ -80,11 +80,11 @@ describe Homebrew::Livecheck do describe "::status_hash" do it "returns a hash containing the livecheck status" do - expect(livecheck.status_hash(f, "blah", ["blah"], args: args)) + expect(livecheck.status_hash(f, "error", ["Unable to get versions"], args: args)) .to eq({ formula: "test", - status: "blah", - messages: ["blah"], + status: "error", + messages: ["Unable to get versions"], meta: { livecheckable: true, }, @@ -146,12 +146,13 @@ describe Homebrew::Livecheck do describe "::livecheck_formulae", :needs_network do it "checks for the latest versions of the formulae" do - allow(args).to receive(:debug?).and_return(false) + allow(args).to receive(:debug?).and_return(true) allow(args).to receive(:newer_only?).and_return(false) - expect { livecheck.livecheck_formulae([f], args) } - .to output(/test : 0\.0\.1 ==> (\d+(?:\.\d+)+)/im).to_stdout - .and not_to_output.to_stderr + expectation = expect { livecheck.livecheck_formulae([f], args) } + expectation.to output(/Strategy:.*PageMatch/).to_stdout + expectation.to output(/test : 0\.0\.1 ==> (\d+(?:\.\d+)+)/).to_stdout + .and not_to_output.to_stderr end end end