summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/query_utils.rb4
-rw-r--r--test/rubygems/test_gem_commands_info_command.rb26
2 files changed, 28 insertions, 2 deletions
diff --git a/lib/rubygems/query_utils.rb b/lib/rubygems/query_utils.rb
index a502717f94..c72955f83b 100644
--- a/lib/rubygems/query_utils.rb
+++ b/lib/rubygems/query_utils.rb
@@ -151,7 +151,7 @@ module Gem::QueryUtils
fetcher.detect(specs_type) { true }
else
fetcher.detect(specs_type) do |name_tuple|
- name === name_tuple.name
+ name === name_tuple.name && options[:version].satisfied_by?(name_tuple.version)
end
end
@@ -159,7 +159,7 @@ module Gem::QueryUtils
end
def specs_type
- if options[:all]
+ if options[:all] || options[:version].specific?
if options[:prerelease]
:complete
else
diff --git a/test/rubygems/test_gem_commands_info_command.rb b/test/rubygems/test_gem_commands_info_command.rb
index b18b405da6..1c9ab7b07c 100644
--- a/test/rubygems/test_gem_commands_info_command.rb
+++ b/test/rubygems/test_gem_commands_info_command.rb
@@ -40,4 +40,30 @@ class TestGemCommandsInfoCommand < Gem::TestCase
assert_match %r{#{@gem.summary}\n}, @ui.output
assert_match "", @ui.error
end
+
+ def test_execute_with_version_flag
+ spec_fetcher do |fetcher|
+ fetcher.spec "coolgem", "1.0"
+ fetcher.spec "coolgem", "2.0"
+ end
+
+ @cmd.handle_options %w[coolgem --remote --version 1.0]
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ expected = <<-EOF
+
+*** REMOTE GEMS ***
+
+coolgem (1.0)
+ Author: A User
+ Homepage: http://example.com
+
+ this is a summary
+ EOF
+
+ assert_equal expected, @ui.output
+ end
end