aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorloadkpi <loadkpi@gmail.com>2022-01-14 09:07:39 +0300
committergit <svn-admin@ruby-lang.org>2022-01-15 14:00:35 +0900
commit7c70151aedf5b51447f7a9ebcb6a4b58ef76deb2 (patch)
tree5c14424039b6acf08133a4231b89b639e4738cb1
parent2dc365db79e46daaf415c4fcabeab540ec43e92e (diff)
downloadruby-7c70151aedf5b51447f7a9ebcb6a4b58ef76deb2.tar.gz
[rubygems/rubygems] Fix `gem update --system` for already installed version of rubygems-update
https://github.com/rubygems/rubygems/commit/c167d513a7
-rw-r--r--lib/rubygems/commands/update_command.rb2
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb34
2 files changed, 35 insertions, 1 deletions
diff --git a/lib/rubygems/commands/update_command.rb b/lib/rubygems/commands/update_command.rb
index 3714b00322..99208e5cb2 100644
--- a/lib/rubygems/commands/update_command.rb
+++ b/lib/rubygems/commands/update_command.rb
@@ -287,7 +287,7 @@ command to remove old versions.
check_oldest_rubygems version
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
- installed_gems = update_gem('rubygems-update', version) if installed_gems.empty?
+ installed_gems = update_gem('rubygems-update', version) if installed_gems.empty? || installed_gems.first.version != version
return if installed_gems.empty?
version = installed_gems.first.version
diff --git a/test/rubygems/test_gem_commands_update_command.rb b/test/rubygems/test_gem_commands_update_command.rb
index ce599d5812..c765e9a8df 100644
--- a/test/rubygems/test_gem_commands_update_command.rb
+++ b/test/rubygems/test_gem_commands_update_command.rb
@@ -157,6 +157,40 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
assert_empty out
end
+ def test_execute_system_update_installed
+ spec_fetcher do |fetcher|
+ fetcher.download 'rubygems-update', 8 do |s|
+ s.files = %w[setup.rb]
+ end
+ end
+
+ @cmd.options[:args] = []
+ @cmd.options[:system] = true
+
+ @cmd.execute
+
+ spec_fetcher do |fetcher|
+ fetcher.download 'rubygems-update', 9 do |s|
+ s.files = %w[setup.rb]
+ end
+ end
+
+ @cmd = Gem::Commands::UpdateCommand.new
+ @cmd.options[:args] = []
+ @cmd.options[:system] = true
+
+ use_ui @ui do
+ @cmd.execute
+ end
+
+ out = @ui.output.split "\n"
+ assert_equal "Updating rubygems-update", out.shift
+ assert_equal "Installing RubyGems 9", out.shift
+ assert_equal "RubyGems system software updated", out.shift
+
+ assert_empty out
+ end
+
def test_execute_system_specific
spec_fetcher do |fetcher|
fetcher.download 'rubygems-update', 8 do |s|