diff --git a/Library/Homebrew/livecheck.rb b/Library/Homebrew/livecheck.rb index e040893961..bb1458f2a1 100644 --- a/Library/Homebrew/livecheck.rb +++ b/Library/Homebrew/livecheck.rb @@ -15,6 +15,7 @@ class Livecheck @regex = nil @skip = false @skip_msg = nil + @strategy = nil @url = nil end @@ -40,6 +41,22 @@ class Livecheck @skip end + # Sets the strategy instance variable to the provided symbol or returns the + # strategy instance variable when no argument is provided. The strategy + # symbols use snake case (e.g., `:page_match`) and correspond to the strategy + # file name. + # @param symbol [Symbol] symbol for the desired strategy + def strategy(symbol = nil) + case symbol + when nil + @strategy + when Symbol + @strategy = symbol + else + raise TypeError, "Livecheck#strategy expects a Symbol" + end + end + # Sets the url instance variable to the argument given, returns the url # instance variable when no argument is given. def url(val = nil) @@ -61,6 +78,7 @@ class Livecheck "regex" => @regex, "skip" => @skip, "skip_msg" => @skip_msg, + "strategy" => @strategy, "url" => @url, } end diff --git a/Library/Homebrew/test/livecheck_spec.rb b/Library/Homebrew/test/livecheck_spec.rb index 4a326066d3..fdeb9627a7 100644 --- a/Library/Homebrew/test/livecheck_spec.rb +++ b/Library/Homebrew/test/livecheck_spec.rb @@ -44,6 +44,23 @@ describe Livecheck do end end + describe "#strategy" do + it "returns nil if not set" do + expect(livecheckable.strategy).to be nil + end + + it "returns the Symbol if set" do + livecheckable.strategy(:page_match) + expect(livecheckable.strategy).to eq(:page_match) + end + + it "raises a TypeError if the argument isn't a Symbol" do + expect { + livecheckable.strategy("page_match") + }.to raise_error(TypeError, "Livecheck#strategy expects a Symbol") + end + end + describe "#url" do it "returns nil if unset" do expect(livecheckable.url).to be nil @@ -57,7 +74,15 @@ describe Livecheck do describe "#to_hash" do it "returns a Hash of all instance variables" do - expect(livecheckable.to_hash).to eq({ "regex"=>nil, "skip"=>false, "skip_msg"=>nil, "url"=>nil }) + expect(livecheckable.to_hash).to eq( + { + "regex" => nil, + "skip" => false, + "skip_msg" => nil, + "strategy" => nil, + "url" => nil, + }, + ) end end end