diff --git a/lib/rubygems/query_utils.rb b/lib/rubygems/query_utils.rb index a95a759401..ea05969422 100644 --- a/lib/rubygems/query_utils.rb +++ b/lib/rubygems/query_utils.rb @@ -132,7 +132,7 @@ module Gem::QueryUtils version_matches = show_prereleases? || !s.version.prerelease? name_matches && version_matches - end + end.uniq(&:full_name) spec_tuples = specs.map do |spec| [spec.name_tuple, spec] diff --git a/test/rubygems/test_gem_commands_list_command.rb b/test/rubygems/test_gem_commands_list_command.rb index c83dd51b67..0b52b54e77 100644 --- a/test/rubygems/test_gem_commands_list_command.rb +++ b/test/rubygems/test_gem_commands_list_command.rb @@ -8,7 +8,9 @@ class TestGemCommandsListCommand < Gem::TestCase super @cmd = Gem::Commands::ListCommand.new + end + def test_execute_installed spec_fetcher do |fetcher| fetcher.spec "c", 1 end @@ -16,9 +18,7 @@ class TestGemCommandsListCommand < Gem::TestCase @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do raise Gem::RemoteFetcher::FetchError end - end - def test_execute_installed @cmd.handle_options %w[c --installed] assert_raise Gem::MockGemUi::SystemExitException do @@ -30,4 +30,29 @@ class TestGemCommandsListCommand < Gem::TestCase assert_equal "true\n", @ui.output assert_equal "", @ui.error end + + def test_execute_normal_gem_shadowing_default_gem + c1_default = new_default_spec "c", 1 + install_default_gems c1_default + + c1 = util_spec("c", 1) {|s| s.date = "2024-01-01" } + install_gem c1 + + Gem::Specification.reset + + @cmd.handle_options %w[c] + + use_ui @ui do + @cmd.execute + end + + expected = <<-EOF + +*** LOCAL GEMS *** + +c (1) +EOF + + assert_equal expected, @ui.output + end end