summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_version.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-08 01:32:18 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-08 01:32:18 +0000
commitc00e84327f14845bd484e76b5ee5dfeb1fa9ce3d (patch)
tree9f558dafa363f4f0118d504a50cd4461e2821cd1 /test/rubygems/test_gem_version.rb
parent6b05153a3a75b74b64553d6a46f501d9ee0f0376 (diff)
Merge rubygems master.
This is RC version of Rubygems 2.7.0. https://github.com/rubygems/rubygems/commit/688fb7e83c13c3fe7c2bb03c49a2db4c82852aee git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_version.rb')
-rw-r--r--test/rubygems/test_gem_version.rb35
1 files changed, 28 insertions, 7 deletions
diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb
index 1897d44905..56c818663e 100644
--- a/test/rubygems/test_gem_version.rb
+++ b/test/rubygems/test_gem_version.rb
@@ -41,6 +41,11 @@ class TestGemVersion < Gem::TestCase
assert_equal v('1.1'), Gem::Version.create(ver)
end
+ def test_class_correct
+ assert_equal true, Gem::Version.correct?("5.1")
+ assert_equal false, Gem::Version.correct?("an incorrect version")
+ end
+
def test_class_new_subclass
v1 = Gem::Version.new '1'
v2 = V.new '1'
@@ -65,7 +70,8 @@ class TestGemVersion < Gem::TestCase
def test_hash
assert_equal v("1.2").hash, v("1.2").hash
refute_equal v("1.2").hash, v("1.3").hash
- refute_equal v("1.2").hash, v("1.2.0").hash
+ assert_equal v("1.2").hash, v("1.2.0").hash
+ assert_equal v("1.2.pre.1").hash, v("1.2.0.pre.1.0").hash
end
def test_initialize
@@ -76,18 +82,23 @@ class TestGemVersion < Gem::TestCase
assert_version_equal "1", 1
end
- def test_initialize_bad
- %W[
+ def test_initialize_invalid
+ invalid_versions = %W[
junk
1.0\n2.0
1..2
1.2\ 3.4
- ].each do |bad|
- e = assert_raises ArgumentError, bad do
- Gem::Version.new bad
+ ]
+
+ # DON'T TOUCH THIS WITHOUT CHECKING CVE-2013-4287
+ invalid_versions << "2.3422222.222.222222222.22222.ads0as.dasd0.ddd2222.2.qd3e."
+
+ invalid_versions.each do |invalid|
+ e = assert_raises ArgumentError, invalid do
+ Gem::Version.new invalid
end
- assert_equal "Malformed version number string #{bad}", e.message, bad
+ assert_equal "Malformed version number string #{invalid}", e.message, invalid
end
end
@@ -105,6 +116,9 @@ class TestGemVersion < Gem::TestCase
assert_prerelease '1.A'
+ assert_prerelease '1-1'
+ assert_prerelease '1-a'
+
refute_prerelease "1.2.0"
refute_prerelease "2.9"
refute_prerelease "22.1.50.0"
@@ -160,6 +174,12 @@ class TestGemVersion < Gem::TestCase
assert_equal [9,8,7], v("9.8.7").segments
end
+ def test_canonical_segments
+ assert_equal [1], v("1.0.0").canonical_segments
+ assert_equal [1, "a", 1], v("1.0.0.a.1.0").canonical_segments
+ assert_equal [1, 2, 3, "pre", 1], v("1.2.3-1").canonical_segments
+ end
+
# Asserts that +version+ is a prerelease.
def assert_prerelease version
@@ -189,6 +209,7 @@ class TestGemVersion < Gem::TestCase
def assert_version_equal expected, actual
assert_equal v(expected), v(actual)
+ assert_equal v(expected).hash, v(actual).hash, "since #{actual} == #{expected}, they must have the same hash"
end
# Assert that two versions are eql?. Checks both directions.