diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index c23b157708f3..86a23509d6e0 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -344,8 +344,8 @@ def <=>(other) return unless Gem::Version === other return 0 if @version == other._version || canonical_segments == other.canonical_segments - lhsegments = _segments - rhsegments = other._segments + lhsegments = canonical_segments + rhsegments = other.canonical_segments lhsize = lhsegments.size rhsize = rhsegments.size diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index a93eea56b70f..3db393e978d2 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -265,6 +265,12 @@ 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.a" + refute_satisfied_by "5.0.0.rc2", "~> 5.x" + + assert_satisfied_by "5.0.0", "~> 5.a" + assert_satisfied_by "5.0.0", "~> 5.x" end def test_illformed_requirements diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 6d3893c25645..c90648f562e8 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -157,6 +157,13 @@ def test_spaceship assert_equal(1, v("1.8.2.a10") <=> v("1.8.2.a9")) assert_equal(0, v("") <=> v("0")) + assert_equal(0, 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.a") <=> v("5.0.0.rc2")) + assert_equal(1, v("5.x") <=> v("5.0.0.rc2")) + assert_nil v("1.0") <=> "whatever" end