summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <[email protected]>2024-05-30 12:46:19 +0900
committerHiroshi SHIBATA <[email protected]>2024-05-30 12:46:19 +0900
commitba8e6e77fd81f039f3bc85b2c1fb72aa93499b14 (patch)
treeb59add7c0c0824968f5b0bf10eceef79b84e7cef
parent974ed1408c516d1e8f992f0b304e2de6f8bd5c1f (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.rb13
-rw-r--r--lib/rubygems/commands/pristine_command.rb6
-rw-r--r--lib/rubygems/specification_record.rb1
-rw-r--r--test/rubygems/test_gem.rb10
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb11
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