[rubygems/rubygems] Fix `gem list` regression when a regular gem shadows a default one

Previously, if you have bundler installed both as a regular gem and a
default gem, the default gem would be displayed by `gem list`.

https://github.com/rubygems/rubygems/commit/10a6b1736e
This commit is contained in:
David Rodríguez 2024-07-23 18:52:03 +02:00 коммит произвёл git
Родитель 3d248b2eb3
Коммит 1164b6a7ba
2 изменённых файлов: 28 добавлений и 3 удалений

Просмотреть файл

@ -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]

Просмотреть файл

@ -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