cask/audit: handle on_os range bounded by depends_on

This commit is contained in:
Eric Knibbe 2024-07-01 22:58:44 -04:00
parent 3baf9f2054
commit 3f73f32286
No known key found for this signature in database
GPG Key ID: 179D9CDDDB814168
2 changed files with 7 additions and 10 deletions

View File

@ -666,11 +666,7 @@ module Cask
return if min_os.nil? || min_os <= HOMEBREW_MACOS_OLDEST_ALLOWED return if min_os.nil? || min_os <= HOMEBREW_MACOS_OLDEST_ALLOWED
cask_min_os = if cask.on_system_blocks_exist? && cask.on_system_block_min_os.present? cask_min_os = [cask.on_system_block_min_os, cask.depends_on.macos&.minimum_version].compact.max
cask.on_system_block_min_os
else
cask.depends_on.macos&.minimum_version
end
odebug "Declared minimum OS version: #{cask_min_os&.to_sym}" odebug "Declared minimum OS version: #{cask_min_os&.to_sym}"
return if cask_min_os&.to_sym == min_os.to_sym return if cask_min_os&.to_sym == min_os.to_sym
return if cask.on_system_blocks_exist? && return if cask.on_system_blocks_exist? &&
@ -678,8 +674,9 @@ module Cask
cask_min_os < MacOSVersion.new("11") cask_min_os < MacOSVersion.new("11")
min_os_definition = if cask_min_os.present? min_os_definition = if cask_min_os.present?
if cask.on_system_blocks_exist? && cask.on_system_block_min_os.present? if cask.on_system_block_min_os.present? &&
"a block with a minimum OS version of #{cask.on_system_block_min_os.inspect}" cask.on_system_block_min_os > cask.depends_on.macos&.minimum_version
"a block with a minimum OS version of #{cask_min_os.to_sym.inspect}"
else else
cask_min_os.to_sym.inspect cask_min_os.to_sym.inspect
end end
@ -687,7 +684,7 @@ module Cask
"no minimum OS version" "no minimum OS version"
end end
add_error "Upstream defined #{min_os.to_sym.inspect} as the minimum OS version " \ add_error "Upstream defined #{min_os.to_sym.inspect} as the minimum OS version " \
"and the cask declared #{min_os_definition}", "but the cask declared #{min_os_definition}",
strict_only: true strict_only: true
end end

View File

@ -131,9 +131,9 @@ module OnSystem
return unless OnSystem.os_condition_met? os_condition, or_condition return unless OnSystem.os_condition_met? os_condition, or_condition
@on_system_block_min_os = if or_condition == :or_older @on_system_block_min_os = if or_condition == :or_older
MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED).to_sym @called_in_on_system_block ? @on_system_block_min_os : MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED)
else else
os_condition MacOSVersion.from_symbol(os_condition)
end end
@called_in_on_system_block = true @called_in_on_system_block = true
result = block.call result = block.call