aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorJack Nagel2013-07-24 19:44:27 -0500
committerJack Nagel2013-07-24 19:48:21 -0500
commit023aff10c7ec66b194badac612fb83b444190e53 (patch)
tree16624a7f247f59ac5302f7bfd3c3e48bd32a75f4 /Library/Homebrew
parent4a2817d8260348f94ad6ae64c93e5d4ebda13c8c (diff)
downloadbrew-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.rb6
-rw-r--r--Library/Homebrew/version.rb23
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