diff options
| author | Jack Nagel | 2013-07-24 19:44:27 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-07-24 19:48:21 -0500 |
| commit | 023aff10c7ec66b194badac612fb83b444190e53 (patch) | |
| tree | 16624a7f247f59ac5302f7bfd3c3e48bd32a75f4 /Library/Homebrew | |
| parent | 4a2817d8260348f94ad6ae64c93e5d4ebda13c8c (diff) | |
| download | brew-023aff10c7ec66b194badac612fb83b444190e53.tar.bz2 | |
Adjust logic to properly sort erlang versions
Fixes Homebrew/homebrew#21417.
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/test/test_versions.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/version.rb | 23 |
2 files changed, 22 insertions, 7 deletions
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 965868e86..1922d82ea 100644 --- a/Library/Homebrew/test/test_versions.rb +++ b/Library/Homebrew/test/test_versions.rb @@ -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 diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index e9af49844..64ef24d1e 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -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) - nums, rest = tokens.partition { |t| NumericToken === t } - nums.concat([NULL_TOKEN]*(length - tokens.length)).concat(rest) + if begins_with_numeric? + nums, rest = tokens.partition { |t| NumericToken === t } + 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 |
