diff --git a/Library/Homebrew/test/unversioned_cask_checker_spec.rb b/Library/Homebrew/test/unversioned_cask_checker_spec.rb index 84db9e8e0d..dc4ddbfef9 100644 --- a/Library/Homebrew/test/unversioned_cask_checker_spec.rb +++ b/Library/Homebrew/test/unversioned_cask_checker_spec.rb @@ -16,6 +16,7 @@ describe Homebrew::UnversionedCaskChecker do ["1.0", "1"] => "1.0", ["1.0", "0"] => "1.0", ["1.2.3.4000", "4000"] => "1.2.3.4000", + ["5", "5.0.45"] => "5.0.45", } expected_mappings.each do |(short_version, version), expected_version| diff --git a/Library/Homebrew/unversioned_cask_checker.rb b/Library/Homebrew/unversioned_cask_checker.rb index cf4cf5c02b..f752e246e4 100644 --- a/Library/Homebrew/unversioned_cask_checker.rb +++ b/Library/Homebrew/unversioned_cask_checker.rb @@ -72,18 +72,15 @@ module Homebrew def self.decide_between_versions(short_version, version) return short_version if short_version == version - short_version_match = short_version&.match?(/\A\d+(\.\d+)+\Z/) - version_match = version&.match?(/\A\d+(\.\d+)+\Z/) + if short_version && version + return version if version.match?(/\A\d+(\.\d+)+\Z/) && version.start_with?("#{short_version}.") + return short_version if short_version.match?(/\A\d+(\.\d+)+\Z/) && short_version.start_with?("#{version}.") - if short_version_match && version_match - return version if version.length > short_version.length && version.start_with?("#{short_version}.") - return short_version if short_version.length > version.length && short_version.start_with?("#{version}.") - end + if short_version.match?(/\A\d+(\.\d+)*\Z/) && version.match?(/\A\d+\Z/) + return short_version if short_version.start_with?("#{version}.") || short_version.end_with?(".#{version}") - if short_version&.match?(/\A\d+(\.\d+)*\Z/) && version&.match?(/\A\d+\Z/) - return short_version if short_version.start_with?("#{version}.") || short_version.end_with?(".#{version}") - - return "#{short_version},#{version}" + return "#{short_version},#{version}" + end end short_version || version