diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index f2f10569e88b..c7a1eb614701 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -368,9 +368,7 @@ def <=>(other) def canonical_segments @canonical_segments ||= - _split_segments.map! do |segments| - segments.reverse_each.drop_while {|s| s == 0 }.reverse - end.reduce(&:concat) + _segments.reverse_each.drop_while {|s| s == 0 }.reverse end protected diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index 7a59243b6adc..518e8d4bc487 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -266,6 +266,9 @@ def test_satisfied_by_eh_good assert_satisfied_by "3.0.rc2", "< 3.0.1" assert_satisfied_by "3.0.rc2", "> 0" + + assert_satisfied_by "5.0.0.rc2", "~> 5.x" + assert_satisfied_by "5.0.0", "~> 5.x" end def test_illformed_requirements @@ -401,7 +404,7 @@ def assert_requirement_equal(expected, actual) def assert_satisfied_by(version, requirement) assert req(requirement).satisfied_by?(v(version)), - "#{requirement} is satisfied by #{version}" + "Expected #{version} to satisfy #{requirement}" end # Refute the assumption that two requirements are equal. @@ -414,6 +417,6 @@ def refute_requirement_equal(unexpected, actual) def refute_satisfied_by(version, requirement) refute req(requirement).satisfied_by?(v(version)), - "#{requirement} is not satisfied by #{version}" + "Expected #{version} not to satisfy #{requirement}" end end diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 939360c7a2e3..1df50c72c46d 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -78,7 +78,7 @@ def test_hash assert_equal v("1.2").hash, v("1.2").hash refute_equal v("1.2").hash, v("1.3").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 + assert_equal v("1.2.0.pre.1").hash, v("1.2.0.pre.1.0").hash end def test_initialize @@ -157,6 +157,12 @@ def test_spaceship assert_equal( 1, v("1.8.2.a10") <=> v("1.8.2.a9")) assert_equal( 0, v("") <=> v("0")) + assert_equal(-1, v("0.beta.1") <=> v("0.0.beta.1")) + assert_equal(-1, v("0.0.beta") <=> v("0.0.beta.1")) + assert_equal( 1, v("0.0.beta") <=> v("0.beta.1")) + + assert_equal(-1, v("5.x") <=> v("5.0.0.rc2")) + assert_nil v("1.0") <=> "whatever" end @@ -206,7 +212,7 @@ def test_segments 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, 0, 0, "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