diff options
author | Hiroshi SHIBATA <[email protected]> | 2024-05-30 12:46:19 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2024-05-30 12:46:19 +0900 |
commit | ba8e6e77fd81f039f3bc85b2c1fb72aa93499b14 (patch) | |
tree | b59add7c0c0824968f5b0bf10eceef79b84e7cef | |
parent | 974ed1408c516d1e8f992f0b304e2de6f8bd5c1f (diff) |
Revert "[rubygems/rubygems] Fix `gem pristine` sometimes failing to pristine user installed gems"
This reverts commit a3edc4abc574b04bcacfae2af188cce7d27bfcf1.
That commit caused test failure with Windows platform.
* https://github.com/ruby/ruby/actions/runs/9289018414/job/25561871390
* https://github.com/ruby/ruby/actions/runs/9289018425/job/25561873060
-rw-r--r-- | lib/rubygems/basic_specification.rb | 13 | ||||
-rw-r--r-- | lib/rubygems/commands/pristine_command.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/specification_record.rb | 1 | ||||
-rw-r--r-- | test/rubygems/test_gem.rb | 10 | ||||
-rw-r--r-- | test/rubygems/test_gem_commands_pristine_command.rb | 11 |
5 files changed, 14 insertions, 27 deletions
diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index f25756f92c..0380fceece 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -144,19 +144,6 @@ class Gem::BasicSpecification end ## - # Returns the full name of this Gem (see `Gem::BasicSpecification#full_name`). - # Information about where the gem is installed is also included if not - # installed in the default GEM_HOME. - - def full_name_with_location - if base_dir != Gem.dir - "#{full_name} in #{base_dir}" - else - full_name - end - end - - ## # Full paths in the gem to add to <code>$LOAD_PATH</code> when this gem is # activated. diff --git a/lib/rubygems/commands/pristine_command.rb b/lib/rubygems/commands/pristine_command.rb index 999c9fef0f..b272a15b6c 100644 --- a/lib/rubygems/commands/pristine_command.rb +++ b/lib/rubygems/commands/pristine_command.rb @@ -148,7 +148,7 @@ extensions will be restored. end unless spec.extensions.empty? || options[:extensions] || options[:only_executables] || options[:only_plugins] - say "Skipped #{spec.full_name_with_location}, it needs to compile an extension" + say "Skipped #{spec.full_name}, it needs to compile an extension" next end @@ -157,7 +157,7 @@ extensions will be restored. unless File.exist?(gem) || options[:only_executables] || options[:only_plugins] require_relative "../remote_fetcher" - say "Cached gem for #{spec.full_name_with_location} not found, attempting to fetch..." + say "Cached gem for #{spec.full_name} not found, attempting to fetch..." dep = Gem::Dependency.new spec.name, spec.version found, _ = Gem::SpecFetcher.fetcher.spec_for_dependency dep @@ -201,7 +201,7 @@ extensions will be restored. installer.install end - say "Restored #{spec.full_name_with_location}" + say "Restored #{spec.full_name}" end end end diff --git a/lib/rubygems/specification_record.rb b/lib/rubygems/specification_record.rb index 664d506265..dd6aa7eafa 100644 --- a/lib/rubygems/specification_record.rb +++ b/lib/rubygems/specification_record.rb @@ -68,6 +68,7 @@ module Gem installed_stubs = installed_stubs(pattern) installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform stubs = installed_stubs + Gem::Specification.default_stubs(pattern) + stubs = stubs.uniq(&:full_name) Gem::Specification._resort!(stubs) stubs end diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 01cb165a67..40a473f8d6 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -1562,11 +1562,11 @@ class TestGem < Gem::TestCase assert_equal m1.gem_dir, File.join(Gem.user_dir, "gems", "m-1") tests = [ - [:dir0, [Gem.dir, Gem.user_dir]], - [:dir1, [Gem.user_dir, Gem.dir]], + [:dir0, [Gem.dir, Gem.user_dir], m0], + [:dir1, [Gem.user_dir, Gem.dir], m1], ] - tests.each do |name, paths| + tests.each do |name, paths, expected| Gem.use_paths paths.first, paths Gem::Specification.reset Gem.searcher = nil @@ -1575,8 +1575,8 @@ class TestGem < Gem::TestCase Gem::Dependency.new("m","1").to_specs.sort assert_equal \ - [m0.gem_dir, m1.gem_dir], - Gem::Dependency.new("m","1").to_specs.map(&:gem_dir).uniq.sort, + [expected.gem_dir], + Gem::Dependency.new("m","1").to_specs.map(&:gem_dir).sort, "Wrong specs for #{name}" spec = Gem::Dependency.new("m","1").to_spec diff --git a/test/rubygems/test_gem_commands_pristine_command.rb b/test/rubygems/test_gem_commands_pristine_command.rb index b8b39133ff..a17d7837c9 100644 --- a/test/rubygems/test_gem_commands_pristine_command.rb +++ b/test/rubygems/test_gem_commands_pristine_command.rb @@ -96,7 +96,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase out = @ui.output.split("\n") assert_equal "Restoring gems to pristine condition...", out.shift - assert_equal "Restored #{a.full_name} in #{Gem.user_dir}", out.shift + assert_equal "Restored #{a.full_name}", out.shift assert_empty out, out.inspect ensure FileUtils.chmod(0o755, @gemhome) @@ -404,7 +404,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase out = @ui.output.split "\n" assert_equal "Restoring gems to pristine condition...", out.shift - assert_equal "Restored #{a.full_name} in #{@gemhome}", out.shift + assert_equal "Restored #{a.full_name}", out.shift assert_equal "Restored #{b.full_name}", out.shift assert_empty out, out.inspect @@ -476,9 +476,8 @@ class TestGemCommandsPristineCommand < Gem::TestCase [ "Restoring gems to pristine condition...", - "Cached gem for a-1 in #{@gemhome} not found, attempting to fetch...", - "Restored a-1 in #{@gemhome}", - "Restored b-1 in #{@gemhome}", + "Cached gem for a-1 not found, attempting to fetch...", + "Restored a-1", "Cached gem for b-1 not found, attempting to fetch...", "Restored b-1", ].each do |line| @@ -496,7 +495,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase assert_path_exist File.join(gemhome2, "cache", "b-1.gem") assert_path_not_exist File.join(@gemhome, "cache", "b-2.gem") assert_path_exist File.join(gemhome2, "gems", "b-1") - assert_path_exist File.join(@gemhome, "gems", "b-1") + assert_path_not_exist File.join(@gemhome, "gems", "b-1") end def test_execute_no_gem |