diff --git a/Library/Homebrew/test/test_versions.rb b/Library/Homebrew/test/test_versions.rb index 86092e2d43..241b47441f 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 6ee03d10c0..d77477bbc5 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 a6e4fb807e..159d3cb2a3 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