aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2014-01-11 19:59:26 -0600
committerJack Nagel2014-01-11 20:00:34 -0600
commit0f5a80a97b83b9aa90792dabac2ea3e9855a3fb3 (patch)
tree31d1ea0d5cc339f0f1aeb79a8e37d9677fb78256
parent92ac63fd9495e4fc75195191c36d5acebb8a6107 (diff)
downloadbrew-0f5a80a97b83b9aa90792dabac2ea3e9855a3fb3.tar.bz2
Fix tokenizing openssl style versions
Fixes Homebrew/homebrew#25736.
-rw-r--r--Library/Homebrew/test/test_versions.rb14
-rw-r--r--Library/Homebrew/test/testing_env.rb4
-rw-r--r--Library/Homebrew/version.rb2
3 files changed, 19 insertions, 1 deletions
diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb
index 86092e2d4..241b47441 100644
--- a/Library/Homebrew/test/test_versions.rb
+++ b/Library/Homebrew/test/test_versions.rb
@@ -2,6 +2,8 @@ require 'testing_env'
require 'version'
class VersionTests < Test::Unit::TestCase
+ include VersionAssertions
+
def test_accepts_objects_responding_to_to_str
value = stub(:to_str => '0.1')
assert_equal '0.1', Version.new(value).to_s
@@ -12,6 +14,18 @@ class VersionTests < Test::Unit::TestCase
assert_raises(TypeError) { Version.new(1) }
assert_raises(TypeError) { Version.new(:symbol) }
end
+
+ def test_tokens
+ assert_version_tokens %w{1 0 z23}, version('1.0z23')
+ assert_version_tokens %w{1 0 z23}, version('1.0.z23')
+ assert_version_tokens %w{1 0 z 23}, version('1.0.z.23')
+ assert_version_tokens %w{1 0 23 z}, version('1.0.23z')
+ assert_version_tokens %w{1 0 23 z}, version('1.0.23.z')
+ end
+
+ def test_openssl_style_tokenization
+ assert_version_tokens %w{1 0 1 f}, version('1.0.1f')
+ end
end
class VersionComparisonTests < Test::Unit::TestCase
diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb
index 6ee03d10c..d77477bbc 100644
--- a/Library/Homebrew/test/testing_env.rb
+++ b/Library/Homebrew/test/testing_env.rb
@@ -97,6 +97,10 @@ module VersionAssertions
def assert_version_nil url
assert_nil Version.parse(url)
end
+
+ def assert_version_tokens tokens, version
+ assert_equal tokens, version.send(:tokens).map(&:to_s)
+ end
end
module Test::Unit::Assertions
diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb
index a6e4fb807..159d3cb2a 100644
--- a/Library/Homebrew/version.rb
+++ b/Library/Homebrew/version.rb
@@ -43,7 +43,7 @@ class Version
NULL_TOKEN = NullToken.new
class StringToken < Token
- PATTERN = /[a-z]+[0-9]+/i
+ PATTERN = /[a-z]+[0-9]*/i
def initialize(value)
@value = value.to_s