[rubygems/rubygems] Make sure --no-user-install
is respected for auto user installation
The `options[:user_install]` might have three states: * `true`: `--user-install` * `false`: `--no-user-install` and * `nil`: option was not specified However, this had not been respected previously and the `false` and `nil` were treated the same. This could lead to auto user installation despite `--no-user-install` being specified on the command line. Fixes https://github.com/rubygems/rubygems/pull/7237 https://github.com/rubygems/rubygems/commit/9281545474
This commit is contained in:
parent
844759ccdb
commit
402fd96ddc
@ -682,7 +682,7 @@ class Gem::Installer
|
||||
if @build_root.nil?
|
||||
if options[:user_install]
|
||||
@gem_home = Gem.user_dir
|
||||
elsif !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
|
||||
elsif options[:user_install].nil? && !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
|
||||
say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
|
||||
@gem_home = Gem.user_dir
|
||||
end
|
||||
|
@ -1995,6 +1995,27 @@ end
|
||||
ENV["GEM_HOME"] = orig_gem_home
|
||||
end
|
||||
|
||||
def test_process_options_does_not_fallback_to_user_install_when_gem_home_not_writable_and_no_user_install
|
||||
if Process.uid.zero?
|
||||
pend("skipped in root privilege")
|
||||
return
|
||||
end
|
||||
|
||||
orig_gem_home = ENV.delete("GEM_HOME")
|
||||
|
||||
@gem = setup_base_gem
|
||||
|
||||
FileUtils.chmod 0o000, @gemhome
|
||||
|
||||
installer = use_ui(@ui) { Gem::Installer.at @gem, user_install: false }
|
||||
|
||||
assert_equal @gemhome, installer.gem_home
|
||||
assert_empty @ui.output.strip
|
||||
ensure
|
||||
FileUtils.chmod 0o755, @gemhome
|
||||
ENV["GEM_HOME"] = orig_gem_home
|
||||
end
|
||||
|
||||
def test_shebang_arguments
|
||||
load_relative "no" do
|
||||
installer = setup_base_installer
|
||||
|
Loading…
x
Reference in New Issue
Block a user