diff options
-rw-r--r-- | lib/rubygems/version.rb | 4 | ||||
-rw-r--r-- | test/rubygems/test_gem_version.rb | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index 42e0f23505..9a26f721d6 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -341,9 +341,11 @@ class Gem::Version # Compares this version with +other+ returning -1, 0, or 1 if the # other version is larger, the same, or smaller than this # one. Attempts to compare to something that's not a - # <tt>Gem::Version</tt> return +nil+. + # <tt>Gem::Version</tt> or a valid version String return +nil+. def <=>(other) + return self <=> self.class.new(other) if (String === other) && self.class.correct?(other) + return unless Gem::Version === other return 0 if @version == other._version || canonical_segments == other.canonical_segments diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 422e1ee86c..f8066ecbb8 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -154,6 +154,10 @@ class TestGemVersion < Gem::TestCase assert_equal(-1, v("5.a") <=> v("5.0.0.rc2")) assert_equal(1, v("5.x") <=> v("5.0.0.rc2")) + assert_equal(0, v("1.9.3") <=> "1.9.3") + assert_equal(1, v("1.9.3") <=> "1.9.2.99") + assert_equal(-1, v("1.9.3") <=> "1.9.3.1") + assert_nil v("1.0") <=> "whatever" end |