Skip to content

Commit 4c56360

Browse files
authored
Merge pull request #19700 from Homebrew/livecheck/make-os-available
Make `os` available in `livecheck` blocks
2 parents fc86107 + 8d52d9b commit 4c56360

File tree

4 files changed

+106
-2
lines changed

4 files changed

+106
-2
lines changed

Library/Homebrew/cask/dsl.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class DSL
8080
:homepage,
8181
:language,
8282
:name,
83+
:os,
8384
:sha256,
8485
:staged_path,
8586
:url,

Library/Homebrew/dev-cmd/tests.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ def run
134134
end
135135
# rubocop:enable Homebrew/MoveToExtendOS
136136

137+
bundle_args << "--tag" << "~needs_arm" unless Hardware::CPU.arm?
138+
139+
bundle_args << "--tag" << "~needs_intel" unless Hardware::CPU.intel?
140+
137141
bundle_args << "--tag" << "~needs_network" unless args.online?
138142
unless ENV["CI"]
139143
bundle_args << "--tag" << "~needs_ci" \

Library/Homebrew/livecheck.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,10 @@ def url(url = T.unsafe(nil), homebrew_curl: nil, post_form: nil, post_json: nil)
194194
end
195195

196196
delegate url_options: :@options
197-
delegate version: :@package_or_resource
198197
delegate arch: :@package_or_resource
199-
private :version, :arch
198+
delegate os: :@package_or_resource
199+
delegate version: :@package_or_resource
200+
private :arch, :os, :version
200201
# Returns a `Hash` of all instance variable values.
201202
# @return [Hash]
202203
sig { returns(T::Hash[String, T.untyped]) }

Library/Homebrew/test/livecheck_spec.rb

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,104 @@
182182
end
183183
end
184184

185+
describe "#arch" do
186+
let(:c_arch) do
187+
Cask::Cask.new("c-arch") do
188+
arch arm: "arm", intel: "intel"
189+
190+
version "0.0.1"
191+
192+
url "https://brew.sh/test-0.0.1.dmg"
193+
name "Test"
194+
desc "Test cask"
195+
homepage "https://brew.sh"
196+
197+
livecheck do
198+
url "https://brew.sh/#{arch}"
199+
end
200+
end
201+
end
202+
203+
[:needs_arm, :needs_intel].each do |needs_arch|
204+
arch_value = needs_arch.to_s.delete_prefix("needs_")
205+
it "delegates `arch` in `livecheck` block to `package_or_resource`", needs_arch do
206+
expect(c_arch.livecheck.url).to eq("https://brew.sh/#{arch_value}")
207+
end
208+
end
209+
end
210+
211+
describe "#os" do
212+
let(:c_os) do
213+
Cask::Cask.new("c-os") do
214+
os macos: "macos", linux: "linux"
215+
216+
version "0.0.1"
217+
218+
url "https://brew.sh/test-0.0.1.dmg"
219+
name "Test"
220+
desc "Test cask"
221+
homepage "https://brew.sh"
222+
223+
livecheck do
224+
url "https://brew.sh/#{os}"
225+
end
226+
end
227+
end
228+
229+
[:needs_macos, :needs_linux].each do |needs_os|
230+
os_value = needs_os.to_s.delete_prefix("needs_")
231+
it "delegates `os` in `livecheck` block to `package_or_resource`", needs_os do
232+
expect(c_os.livecheck.url).to eq("https://brew.sh/#{os_value}")
233+
end
234+
end
235+
end
236+
237+
describe "#version" do
238+
let(:url_with_version) { "https://brew.sh/0.0.1" }
239+
240+
let(:f_version) do
241+
formula do
242+
homepage "https://brew.sh"
243+
url "https://brew.sh/test-0.0.1.tgz"
244+
245+
livecheck do
246+
url "https://brew.sh/#{version}"
247+
end
248+
end
249+
end
250+
251+
let(:c_version) do
252+
Cask::Cask.new("c-version") do
253+
version "0.0.1"
254+
255+
url "https://brew.sh/test-0.0.1.dmg"
256+
name "Test"
257+
desc "Test cask"
258+
homepage "https://brew.sh"
259+
260+
livecheck do
261+
url "https://brew.sh/#{version}"
262+
end
263+
end
264+
end
265+
266+
let(:r_version) do
267+
Resource.new do
268+
url "https://brew.sh/test-0.0.1.tgz"
269+
270+
livecheck do
271+
url "https://brew.sh/#{version}"
272+
end
273+
end
274+
end
275+
276+
it "delegates `version` in `livecheck` block to `package_or_resource`" do
277+
expect(f_version.livecheck.url).to eq(url_with_version)
278+
expect(c_version.livecheck.url).to eq(url_with_version)
279+
expect(r_version.livecheck.url).to eq(url_with_version)
280+
end
281+
end
282+
185283
describe "#to_hash" do
186284
it "returns a Hash of all instance variables" do
187285
expect(livecheck_f.to_hash).to eq(

0 commit comments

Comments
 (0)