Version: allow coercing non-versions in comparisons

These are needed due to the raw string and fixnum comparisons which
exist for legacy reasons, for instance compiler version and build
comparisons.
This commit is contained in:
Misty De Meo 2016-11-03 16:47:18 -07:00
parent b6acb9cb47
commit 16529a4de5
2 changed files with 10 additions and 0 deletions

View File

@ -149,6 +149,11 @@ class VersionComparisonTests < Homebrew::TestCase
assert_operator version("2.1.0-p194"), :>, nil
end
def test_comparing_against_strings
assert_operator version("2.1.0-p194"), :==, "2.1.0-p194"
assert_operator version("1"), :==, 1
end
def test_comparison_returns_nil_for_non_version
v = version("1.0")
assert_nil v <=> Object.new

View File

@ -213,6 +213,11 @@ class Version
end
def <=>(other)
# Needed to retain API compatibility with older string comparisons
# for compiler versions, etc.
other = Version.new(other) if other.is_a? String
# Used by the *_build_version comparisons, which formerly returned Fixnum
other = Version.new(other.to_s) if other.is_a? Integer
return 1 if other.nil?
return unless other.is_a?(Version)