Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Library/Homebrew/cask/artifact.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@ module Artifact
::Cask::Artifact::Vst3Plugin,
].freeze

LINUX_ONLY_ARTIFACTS = [].freeze
LINUX_ONLY_ARTIFACTS = T.let([].freeze, T::Array[T.untyped])
end
end
8 changes: 3 additions & 5 deletions Library/Homebrew/cask/cask.rb
Original file line number Diff line number Diff line change
Expand Up @@ -176,10 +176,9 @@ def supports_linux?
def contains_os_specific_artifacts?
return false unless @dsl.on_system_blocks_exist?

any_loaded = false
any_loaded = T.let(false, T::Boolean)
@contains_os_specific_artifacts ||= begin
OnSystem::VALID_OS_ARCH_TAGS.each do |bottle_tag|
begin
Homebrew::SimulateSystem.with_tag(bottle_tag) do
refresh

Expand All @@ -188,12 +187,11 @@ def contains_os_specific_artifacts?
(bottle_tag.macos? && ::Cask::Artifact::LINUX_ONLY_ARTIFACTS.include?(artifact.class))
end
end
rescue CaskInvalidError
rescue CaskInvalidError
# Invalid for this OS/arch tag; treat as having no OS-specific artifacts.
next
ensure
ensure
refresh
end
end

any_loaded
Expand Down
4 changes: 2 additions & 2 deletions Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def filter_runners(cask)
filtered_runners = if filtered_macos_runners.any?
filtered_macos_runners
else
RUNNERS.dup
MACOS_RUNNERS.dup
end

macos_archs = architectures(cask:, os: :macos)
Expand All @@ -156,7 +156,7 @@ def filter_runners(cask)

sig { params(cask: Cask::Cask, os: Symbol).returns(T::Array[Symbol]) }
def architectures(cask:, os: :macos)
architectures = []
architectures = T.let([], T::Array[Symbol])
[:arm, :intel].each do |arch|
tag = Utils::Bottles::Tag.new(system: os, arch: arch)
Homebrew::SimulateSystem.with_tag(tag) do
Expand Down
17 changes: 17 additions & 0 deletions Library/Homebrew/test/cask/cask_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,23 @@
end
end

describe "#contains_os_specific_artifacts?" do
it "returns false for casks without on_system blocks" do
cask = Cask::CaskLoader.load("local-caffeine")
expect(cask.contains_os_specific_artifacts?).to be false
end

it "returns false for casks with on_system blocks but no OS-specific artifacts" do
cask = Cask::CaskLoader.load("with-os-blocks-no-os-artifacts")
expect(cask.contains_os_specific_artifacts?).to be false
end

it "returns true for casks with on_system blocks that have OS-specific artifacts" do
cask = Cask::CaskLoader.load("with-os-specific-artifacts")
expect(cask.contains_os_specific_artifacts?).to be true
end
end

describe "#to_hash_with_variations" do
let!(:original_macos_version) { MacOS.full_version.to_s }
let(:expected_versions_variations) do
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cask "with-os-blocks-no-os-artifacts" do
version "1.2.3"

on_macos do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"

binary "caffeine"
end

on_linux do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"

binary "caffeine"
end

name "With OS blocks but no OS-specific artifacts"
homepage "https://brew.sh/"
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cask "with-os-specific-artifacts" do
version "1.2.3"

on_macos do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"

app "Caffeine.app"
end

on_linux do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"

app "Caffeine.app"
end

name "With OS-specific artifacts"
homepage "https://brew.sh/"
end
Loading