summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_installer.rb
diff options
context:
space:
mode:
authorVít Ondruch <vondruch@redhat.com>2023-12-12 14:38:45 +0100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2023-12-13 12:16:55 +0900
commit402fd96ddc401cf35bced8d394c44df98d6fc466 (patch)
treeed4d5d5b85874b05fb62c4bfd7a48809dc09a178 /test/rubygems/test_gem_installer.rb
parent844759ccdbf9400796259888d613597585ad697a (diff)
[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
Diffstat (limited to 'test/rubygems/test_gem_installer.rb')
-rw-r--r--test/rubygems/test_gem_installer.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 4fa8b7f4fe..3110ac63a6 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -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