diff --git a/Library/Homebrew/cask/cask.rb b/Library/Homebrew/cask/cask.rb index a939c4512a..118358a9d9 100644 --- a/Library/Homebrew/cask/cask.rb +++ b/Library/Homebrew/cask/cask.rb @@ -118,7 +118,7 @@ module Cask end ::Cask::DSL::DSL_METHODS.each do |method_name| - define_method(method_name) { |&block| @dsl.send(method_name, &block) } + define_method(method_name) { |*args, &block| @dsl.send(method_name, *args, &block) } end sig { params(caskroom_path: Pathname).returns(T::Array[[String, String]]) } diff --git a/Library/Homebrew/livecheck/strategy/extract_plist.rb b/Library/Homebrew/livecheck/strategy/extract_plist.rb index b649bef0be..e0778d01bc 100644 --- a/Library/Homebrew/livecheck/strategy/extract_plist.rb +++ b/Library/Homebrew/livecheck/strategy/extract_plist.rb @@ -104,7 +104,7 @@ module Homebrew # Create a copy of the `cask` that uses the `livecheck` block URL cask_copy = Cask::CaskLoader.load(cask.sourcefile_path) cask_copy.allow_reassignment = true - cask_copy.url { url } + cask_copy.url url UnversionedCaskChecker.new(cask_copy) else UnversionedCaskChecker.new(cask) diff --git a/Library/Homebrew/test/livecheck/strategy/extract_plist_spec.rb b/Library/Homebrew/test/livecheck/strategy/extract_plist_spec.rb index 039cdc2507..6f714b9fe7 100644 --- a/Library/Homebrew/test/livecheck/strategy/extract_plist_spec.rb +++ b/Library/Homebrew/test/livecheck/strategy/extract_plist_spec.rb @@ -114,5 +114,15 @@ RSpec.describe Homebrew::Livecheck::Strategy::ExtractPlist do expect(installer_artifact).to be_a(Cask::Artifact::Installer) expect(installer_artifact.path).to be_a(Pathname) end + + it "uses the provided livecheck url", :needs_macos do + cask = Cask::CaskLoader.load(cask_path("livecheck/livecheck-extract-plist")) + livecheck_url = "file://#{TEST_FIXTURE_DIR}/cask/caffeine-with-plist.zip" + + expect(Homebrew::UnversionedCaskChecker).to receive(:new).with(cask).and_call_original + result = described_class.find_versions(cask:, url: livecheck_url) + expect(result) + .to eq({ matches: { "1.2.3"=> @version="1.2.3" }, regex: nil, url: livecheck_url }) + end end end diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/livecheck/livecheck-extract-plist.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/livecheck/livecheck-extract-plist.rb new file mode 100644 index 0000000000..f5cf411aa6 --- /dev/null +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/livecheck/livecheck-extract-plist.rb @@ -0,0 +1,16 @@ +cask "livecheck-extract-plist" do + version "1.2.3" + sha256 "78c670559a609f5d89a5d75eee49e2a2dab48aa3ea36906d14d5f7104e483bb9" + + url "file://#{TEST_FIXTURE_DIR}/cask/caffeine-suite.zip" + name "With Extract Plist Livecheck" + desc "Cask with a an ExtractPlist livecheck strategy" + homepage "https://brew.sh/" + + livecheck do + url "file://#{TEST_FIXTURE_DIR}/cask/caffeine-with-plist.zip" + strategy :extract_plist + end + + app "Caffeine.app" +end diff --git a/Library/Homebrew/test/support/fixtures/cask/caffeine-with-plist.zip b/Library/Homebrew/test/support/fixtures/cask/caffeine-with-plist.zip new file mode 100644 index 0000000000..646884181a Binary files /dev/null and b/Library/Homebrew/test/support/fixtures/cask/caffeine-with-plist.zip differ