diff options
author | David Rodriguez <[email protected]> | 2024-05-16 16:01:10 +0200 |
---|---|---|
committer | git <[email protected]> | 2024-05-29 15:35:04 +0000 |
commit | a3edc4abc574b04bcacfae2af188cce7d27bfcf1 () | |
tree | adf29d37e085505910d67681e1006f5bc6512f72 | |
parent | bc8a9cc1568e7219ac0aec9b82efad0e5d4af7e7 (diff) |
[rubygems/rubygems] Fix `gem pristine` sometimes failing to pristine user installed gems
https://.com/rubygems/rubygems/commit/0eb6ed8f86
-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, 27 insertions, 14 deletions
@@ -144,6 +144,19 @@ class Gem::BasicSpecification end ## # Full paths in the gem to add to <code>$LOAD_PATH</code> when this gem is # activated. @@ -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}, 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} 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}" end end end @@ -68,7 +68,6 @@ 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 @@ -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], m0], - [:dir1, [Gem.user_dir, Gem.dir], m1], ] - 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 \ - [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 @@ -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}", 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}", out.shift assert_equal "Restored #{b.full_name}", out.shift assert_empty out, out.inspect @@ -476,8 +476,9 @@ class TestGemCommandsPristineCommand < Gem::TestCase [ "Restoring gems to pristine condition...", - "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| @@ -495,7 +496,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_not_exist File.join(@gemhome, "gems", "b-1") end def test_execute_no_gem |