Adjust logic to properly sort erlang versions
Fixes Homebrew/homebrew#21417.
This commit is contained in:
parent
4a2817d826
commit
023aff10c7
@ -46,6 +46,12 @@ class VersionComparisonTests < Test::Unit::TestCase
|
||||
def test_compare_patchlevel_to_non_patchlevel
|
||||
assert_operator version('9.9.3-P1'), :>, version('9.9.3')
|
||||
end
|
||||
|
||||
def test_erlang_version
|
||||
versions = %w{R16B R15B03-1 R15B03 R15B02 R15B01 R14B04 R14B03
|
||||
R14B02 R14B01 R14B R13B04 R13B03 R13B02-1}.reverse
|
||||
assert_equal versions, versions.sort_by { |v| version(v) }
|
||||
end
|
||||
end
|
||||
|
||||
class VersionParsingTests < Test::Unit::TestCase
|
||||
|
@ -80,12 +80,12 @@ class Version
|
||||
|
||||
class CompositeToken < StringToken
|
||||
def rev
|
||||
value[/([0-9]+)/, 1]
|
||||
value[/([0-9]+)/, 1] || "0"
|
||||
end
|
||||
end
|
||||
|
||||
class AlphaToken < CompositeToken
|
||||
PATTERN = /a(?:lpha)?[0-9]+/i
|
||||
PATTERN = /a(?:lpha)?[0-9]*/i
|
||||
|
||||
def <=>(other)
|
||||
case other
|
||||
@ -98,7 +98,7 @@ class Version
|
||||
end
|
||||
|
||||
class BetaToken < CompositeToken
|
||||
PATTERN = /b(?:eta)?[0-9]+/i
|
||||
PATTERN = /b(?:eta)?[0-9]*/i
|
||||
|
||||
def <=>(other)
|
||||
case other
|
||||
@ -115,7 +115,7 @@ class Version
|
||||
end
|
||||
|
||||
class RCToken < CompositeToken
|
||||
PATTERN = /rc[0-9]+/i
|
||||
PATTERN = /rc[0-9]*/i
|
||||
|
||||
def <=>(other)
|
||||
case other
|
||||
@ -132,7 +132,7 @@ class Version
|
||||
end
|
||||
|
||||
class PatchToken < CompositeToken
|
||||
PATTERN = /p[0-9]+/i
|
||||
PATTERN = /p[0-9]*/i
|
||||
|
||||
def <=>(other)
|
||||
case other
|
||||
@ -192,9 +192,18 @@ class Version
|
||||
|
||||
protected
|
||||
|
||||
def begins_with_numeric?
|
||||
NumericToken === tokens.first
|
||||
end
|
||||
|
||||
def pad_to(length)
|
||||
if begins_with_numeric?
|
||||
nums, rest = tokens.partition { |t| NumericToken === t }
|
||||
nums.concat([NULL_TOKEN]*(length - tokens.length)).concat(rest)
|
||||
nums.fill(NULL_TOKEN, nums.length, length - tokens.length)
|
||||
nums.concat(rest)
|
||||
else
|
||||
tokens.dup.fill(NULL_TOKEN, tokens.length, length - tokens.length)
|
||||
end
|
||||
end
|
||||
|
||||
def tokens
|
||||
|
Loading…
x
Reference in New Issue
Block a user