diff --git a/lib/rubygems/dependency.rb b/lib/rubygems/dependency.rb index b09a5fe8ef..0c58815c85 100644 --- a/lib/rubygems/dependency.rb +++ b/lib/rubygems/dependency.rb @@ -334,4 +334,18 @@ class Gem::Dependency matches.first end + def identity + if prerelease? + if specific? + :complete + else + :abs_latest + end + elsif latest_version? + :latest + else + :released + end + end + end diff --git a/test/rubygems/test_gem_dependency.rb b/test/rubygems/test_gem_dependency.rb index bf2f065573..0caab10d32 100644 --- a/test/rubygems/test_gem_dependency.rb +++ b/test/rubygems/test_gem_dependency.rb @@ -385,4 +385,11 @@ class TestGemDependency < Gem::TestCase assert_match "Could not find 'b' (= 2.0) among 1 total gem(s)", e.message end + def test_identity + assert_equal dep("a", "= 1").identity, :released + assert_equal dep("a", "= 1.a").identity, :complete + assert_equal dep("a", " >= 1.a").identity, :abs_latest + assert_equal dep("a").identity, :latest + end + end