Merge pull request #19700 from Homebrew/livecheck/make-os-available

Make `os` available in `livecheck` blocks
This commit is contained in:
Mike McQuaid 2025-04-04 14:29:16 +00:00 committed by GitHub
commit 4c56360267
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 106 additions and 2 deletions

View File

@ -80,6 +80,7 @@ module Cask
:homepage,
:language,
:name,
:os,
:sha256,
:staged_path,
:url,

View File

@ -134,6 +134,10 @@ module Homebrew
end
# rubocop:enable Homebrew/MoveToExtendOS
bundle_args << "--tag" << "~needs_arm" unless Hardware::CPU.arm?
bundle_args << "--tag" << "~needs_intel" unless Hardware::CPU.intel?
bundle_args << "--tag" << "~needs_network" unless args.online?
unless ENV["CI"]
bundle_args << "--tag" << "~needs_ci" \

View File

@ -194,9 +194,10 @@ class Livecheck
end
delegate url_options: :@options
delegate version: :@package_or_resource
delegate arch: :@package_or_resource
private :version, :arch
delegate os: :@package_or_resource
delegate version: :@package_or_resource
private :arch, :os, :version
# Returns a `Hash` of all instance variable values.
# @return [Hash]
sig { returns(T::Hash[String, T.untyped]) }

View File

@ -182,6 +182,104 @@ RSpec.describe Livecheck do
end
end
describe "#arch" do
let(:c_arch) do
Cask::Cask.new("c-arch") do
arch arm: "arm", intel: "intel"
version "0.0.1"
url "https://brew.sh/test-0.0.1.dmg"
name "Test"
desc "Test cask"
homepage "https://brew.sh"
livecheck do
url "https://brew.sh/#{arch}"
end
end
end
[:needs_arm, :needs_intel].each do |needs_arch|
arch_value = needs_arch.to_s.delete_prefix("needs_")
it "delegates `arch` in `livecheck` block to `package_or_resource`", needs_arch do
expect(c_arch.livecheck.url).to eq("https://brew.sh/#{arch_value}")
end
end
end
describe "#os" do
let(:c_os) do
Cask::Cask.new("c-os") do
os macos: "macos", linux: "linux"
version "0.0.1"
url "https://brew.sh/test-0.0.1.dmg"
name "Test"
desc "Test cask"
homepage "https://brew.sh"
livecheck do
url "https://brew.sh/#{os}"
end
end
end
[:needs_macos, :needs_linux].each do |needs_os|
os_value = needs_os.to_s.delete_prefix("needs_")
it "delegates `os` in `livecheck` block to `package_or_resource`", needs_os do
expect(c_os.livecheck.url).to eq("https://brew.sh/#{os_value}")
end
end
end
describe "#version" do
let(:url_with_version) { "https://brew.sh/0.0.1" }
let(:f_version) do
formula do
homepage "https://brew.sh"
url "https://brew.sh/test-0.0.1.tgz"
livecheck do
url "https://brew.sh/#{version}"
end
end
end
let(:c_version) do
Cask::Cask.new("c-version") do
version "0.0.1"
url "https://brew.sh/test-0.0.1.dmg"
name "Test"
desc "Test cask"
homepage "https://brew.sh"
livecheck do
url "https://brew.sh/#{version}"
end
end
end
let(:r_version) do
Resource.new do
url "https://brew.sh/test-0.0.1.tgz"
livecheck do
url "https://brew.sh/#{version}"
end
end
end
it "delegates `version` in `livecheck` block to `package_or_resource`" do
expect(f_version.livecheck.url).to eq(url_with_version)
expect(c_version.livecheck.url).to eq(url_with_version)
expect(r_version.livecheck.url).to eq(url_with_version)
end
end
describe "#to_hash" do
it "returns a Hash of all instance variables" do
expect(livecheck_f.to_hash).to eq(