1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Disallow downgrades to too old versions

Consider the version original included with each ruby as the minimum
supported version.
This commit is contained in:
David Rodríguez 2020-04-28 16:28:52 +02:00 committed by Hiroshi SHIBATA
parent 828cefd629
commit c6bdf75049
Notes: git 2020-09-28 14:54:56 +09:00
2 changed files with 36 additions and 1 deletions

View file

@ -74,6 +74,13 @@ command to remove old versions.
end
end
def check_oldest_rubygems(version) # :nodoc:
if oldest_supported_version > version
alert_error "rubygems #{version} is not supported. The oldest supported version is #{oldest_supported_version}"
terminate_interaction 1
end
end
def check_update_arguments # :nodoc:
unless options[:args].empty?
alert_error "Gem names are not allowed with the --system option"
@ -214,7 +221,7 @@ command to remove old versions.
rubygems_update.version = version
hig = {
'rubygems-update' => rubygems_update
'rubygems-update' => rubygems_update,
}
gems_to_update = which_to_update hig, options[:args], :system
@ -272,6 +279,8 @@ command to remove old versions.
check_latest_rubygems version
check_oldest_rubygems version
update_gem 'rubygems-update', version
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
@ -309,4 +318,10 @@ command to remove old versions.
result
end
private
def oldest_supported_version
@oldest_supported_version ||= Gem::Version.new("2.5.2")
end
end

View file

@ -158,6 +158,26 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
assert_empty out
end
def test_execute_system_specific_older_than_minimum_supported_rubygems
spec_fetcher do |fetcher|
fetcher.download 'rubygems-update', "2.5.1" do |s|
s.files = %w[setup.rb]
end
end
@cmd.options[:args] = []
@cmd.options[:system] = "2.5.1"
assert_raises Gem::MockGemUi::TermError do
use_ui @ui do
@cmd.execute
end
end
assert_empty @ui.output
assert_equal "ERROR: rubygems 2.5.1 is not supported. The oldest supported version is 2.5.2\n", @ui.error
end
def test_execute_system_specific_older_than_3_2_removes_plugins_dir
spec_fetcher do |fetcher|
fetcher.download 'rubygems-update', 3.1 do |s|