From 9ffd0e66af53855ed8de7033d29d9f0b2d9056cd Mon Sep 17 00:00:00 2001 From: nandahkrishna Date: Sun, 31 May 2020 00:10:46 +0530 Subject: [PATCH] livecheck: reference Formula URLs --- Library/Homebrew/formula.rb | 2 +- Library/Homebrew/livecheck.rb | 12 ++++++++++-- Library/Homebrew/test/formula_spec.rb | 14 ++++++++++++++ Library/Homebrew/test/livecheck_spec.rb | 8 +++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index faaaf2d61d..9d876ddb18 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2670,7 +2670,7 @@ class Formula # regex /foo-(\d+(?:\.\d+)+)\.tar/ # end def livecheck(&block) - @livecheck ||= Livecheck.new + @livecheck ||= Livecheck.new(self) return @livecheck unless block_given? @livecheckable = true diff --git a/Library/Homebrew/livecheck.rb b/Library/Homebrew/livecheck.rb index f2bf621f1e..e040893961 100644 --- a/Library/Homebrew/livecheck.rb +++ b/Library/Homebrew/livecheck.rb @@ -10,7 +10,8 @@ class Livecheck # e.g. `Not maintained` attr_reader :skip_msg - def initialize + def initialize(formula) + @formula = formula @regex = nil @skip = false @skip_msg = nil @@ -44,7 +45,14 @@ class Livecheck def url(val = nil) return @url if val.nil? - @url = val + @url = case val + when :head, :stable, :devel + @formula.send(val).url + when :homepage + @formula.homepage + else + val + end end # Returns a Hash of all instance variable values. diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index f7c13c6ceb..a2aa8ce899 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -697,6 +697,20 @@ describe Formula do expect(f.livecheckable?).to be true end + + specify "livecheck references Formula URL" do + f = formula do + homepage "https://brew.sh/test" + + url "https://brew.sh/test-1.0.tbz" + livecheck do + url :homepage + regex(/test-(\d+(?:.\d+)+).tbz/) + end + end + + expect(f.livecheck.url).to eq("https://brew.sh/test") + end end specify "dependencies" do diff --git a/Library/Homebrew/test/livecheck_spec.rb b/Library/Homebrew/test/livecheck_spec.rb index f975548cda..4a326066d3 100644 --- a/Library/Homebrew/test/livecheck_spec.rb +++ b/Library/Homebrew/test/livecheck_spec.rb @@ -1,9 +1,15 @@ # frozen_string_literal: true +require "formula" require "livecheck" describe Livecheck do - subject(:livecheckable) { described_class.new } + let(:f) do + formula do + url "https://brew.sh/test-0.1.tbz" + end + end + let(:livecheckable) { described_class.new(f) } describe "#regex" do it "returns nil if unset" do