aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/dependency.rb14
-rw-r--r--test/rubygems/test_gem_dependency.rb7
2 files changed, 21 insertions, 0 deletions
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