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:
parent
828cefd629
commit
c6bdf75049
Notes:
git
2020-09-28 14:54:56 +09:00
2 changed files with 36 additions and 1 deletions
|
@ -74,6 +74,13 @@ command to remove old versions.
|
||||||
end
|
end
|
||||||
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:
|
def check_update_arguments # :nodoc:
|
||||||
unless options[:args].empty?
|
unless options[:args].empty?
|
||||||
alert_error "Gem names are not allowed with the --system option"
|
alert_error "Gem names are not allowed with the --system option"
|
||||||
|
@ -214,7 +221,7 @@ command to remove old versions.
|
||||||
rubygems_update.version = version
|
rubygems_update.version = version
|
||||||
|
|
||||||
hig = {
|
hig = {
|
||||||
'rubygems-update' => rubygems_update
|
'rubygems-update' => rubygems_update,
|
||||||
}
|
}
|
||||||
|
|
||||||
gems_to_update = which_to_update hig, options[:args], :system
|
gems_to_update = which_to_update hig, options[:args], :system
|
||||||
|
@ -272,6 +279,8 @@ command to remove old versions.
|
||||||
|
|
||||||
check_latest_rubygems version
|
check_latest_rubygems version
|
||||||
|
|
||||||
|
check_oldest_rubygems version
|
||||||
|
|
||||||
update_gem 'rubygems-update', version
|
update_gem 'rubygems-update', version
|
||||||
|
|
||||||
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
|
installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
|
||||||
|
@ -309,4 +318,10 @@ command to remove old versions.
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def oldest_supported_version
|
||||||
|
@oldest_supported_version ||= Gem::Version.new("2.5.2")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -158,6 +158,26 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
|
||||||
assert_empty out
|
assert_empty out
|
||||||
end
|
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
|
def test_execute_system_specific_older_than_3_2_removes_plugins_dir
|
||||||
spec_fetcher do |fetcher|
|
spec_fetcher do |fetcher|
|
||||||
fetcher.download 'rubygems-update', 3.1 do |s|
|
fetcher.download 'rubygems-update', 3.1 do |s|
|
||||||
|
|
Loading…
Reference in a new issue