summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2020-04-23 19:16:06 +0900
committerGitHub <noreply@github.com>2020-04-23 19:16:06 +0900
commit5c6269c4593f8b1a83b72e157c460dd2b37338c7 (patch)
treed179fbf295790b083035ddaf454f1db4b4982986
parentf563f3c5ef517b62f1a95ab03286335e4fe72314 (diff)
Support XDG_* (#2174)
* Support XDG_CONFIG_HOME for gemrc. * Support XDG_DATA_HOME for .gem * Added test for XDG_DATA_HOME * Do not reuse environmental variable. * Unify .rdoc path to RDoc.home. * Support XDG_DATA_HOME for .rdoc * Ignore exists? * Extracted config_home path * Use XDG_CONFIG_HOME for default credential path * Fixed inconsistency location. * Fixed the broken tests. * Support XDG_CONFIG_HOME for irbrc * Introduce Gem.cache_home as XDG_CACHE_HOME * Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems. * Initialized the old configurations * Fixed test failure related the configuration initialization * restore XDG_DATA_HOME * Fixed the broken examples of bundler with XDG_* * Do not modify environmental variable on test file * Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file * stub out Gem.data_home * Move dir accessor to defaults.rb file * Use XDG_DATA_HOME for signed gem features * Use XDG_DATA_HOME for spec cache * Do not rely on Gem.user_home * Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p * Bump support version to RubyGems 3.2.0+ * Removed the needless fallback configuration * Fixed the inconsistency methods that are find_config_file and config_file * Use Gem.configuration.credentials_path instead of hard-coded path * gem_path is always provided * Removed the duplicated code of find_home * Also removed the duplicated code of user_home * use Gem::UNTAINT instead of untaint for surpressing the warnings * Use File.directory * Restore XDG_DATA_HOME * Use File.write
Notes
Notes: Merged-By: hsbt <hsbt@ruby-lang.org>
-rw-r--r--lib/irb/init.rb9
-rw-r--r--lib/rdoc.rb18
-rw-r--r--lib/rdoc/ri/paths.rb5
-rw-r--r--lib/rdoc/store.rb2
-rw-r--r--lib/rubygems.rb41
-rw-r--r--lib/rubygems/config_file.rb11
-rw-r--r--lib/rubygems/defaults.rb102
-rw-r--r--lib/rubygems/gemcutter_utilities.rb2
-rw-r--r--lib/rubygems/test_case.rb7
-rw-r--r--spec/bundler/bundler/env_spec.rb10
-rw-r--r--spec/bundler/bundler/friendly_errors_spec.rb9
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb22
-rw-r--r--test/rdoc/test_rdoc_store.rb7
-rw-r--r--test/rubygems/test_gem.rb2
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb2
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb4
-rw-r--r--test/rubygems/test_gem_commands_signout_command.rb1
-rw-r--r--test/rubygems/test_gem_config_file.rb4
-rw-r--r--test/rubygems/test_gem_source.rb2
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb2
20 files changed, 186 insertions, 76 deletions
diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index 37d1f8d..da40bee 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -271,10 +271,19 @@ module IRB # :nodoc:
if irbrc = ENV["IRBRC"]
yield proc{|rc| rc == "rc" ? irbrc : irbrc+rc}
end
+ if xdg_config_home = ENV["XDG_CONFIG_HOME"]
+ irb_home = File.join(xdg_config_home, "irb")
+ unless File.exist? irb_home
+ require 'fileutils'
+ FileUtils.mkdir_p irb_home
+ end
+ yield proc{|rc| irb_home + "/irb#{rc}"}
+ end
if home = ENV["HOME"]
yield proc{|rc| home+"/.irb#{rc}"}
end
current_dir = Dir.pwd
+ yield proc{|rc| current_dir+"/.config/irb/irb#{rc}"}
yield proc{|rc| current_dir+"/.irb#{rc}"}
yield proc{|rc| current_dir+"/irb#{rc.sub(/\A_?/, '.')}"}
yield proc{|rc| current_dir+"/_irb#{rc}"}
diff --git a/lib/rdoc.rb b/lib/rdoc.rb
index fc8ad9e..a05391d 100644
--- a/lib/rdoc.rb
+++ b/lib/rdoc.rb
@@ -120,6 +120,24 @@ module RDoc
end
end
+ def self.home
+ rdoc_dir = begin
+ File.expand_path('~/.rdoc')
+ rescue ArgumentError
+ end
+
+ if File.directory?(rdoc_dir)
+ rdoc_dir
+ else
+ # XDG
+ xdg_data_home = ENV["XDG_DATA_HOME"] || File.join(File.expand_path("~"), '.local', 'share')
+ unless File.exist?(xdg_data_home)
+ FileUtils.mkdir_p xdg_data_home
+ end
+ File.join xdg_data_home, "rdoc"
+ end
+ end
+
autoload :RDoc, 'rdoc/rdoc'
autoload :CrossReference, 'rdoc/cross_reference'
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index b1d5848..7891d1e 100644
--- a/lib/rdoc/ri/paths.rb
+++ b/lib/rdoc/ri/paths.rb
@@ -14,10 +14,7 @@ module RDoc::RI::Paths
BASE = File.join RbConfig::CONFIG['ridir'], version
- HOMEDIR = begin
- File.expand_path('~/.rdoc')
- rescue ArgumentError
- end
+ HOMEDIR = RDoc.home
#:startdoc:
##
diff --git a/lib/rdoc/store.rb b/lib/rdoc/store.rb
index 0f6cd06..05d8383 100644
--- a/lib/rdoc/store.rb
+++ b/lib/rdoc/store.rb
@@ -482,7 +482,7 @@ class RDoc::Store
when :gem then
parent = File.expand_path '..', @path
"gem #{File.basename parent}"
- when :home then '~/.rdoc'
+ when :home then RDoc.home
when :site then 'ruby site'
when :system then 'ruby core'
else @path
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 73321ec..5026fc4 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -338,13 +338,6 @@ module Gem
end
##
- # The path to standard location of the user's .gemrc file.
-
- def self.config_file
- @config_file ||= File.join Gem.user_home, '.gemrc'
- end
-
- ##
# The standard configuration object for gems.
def self.configuration
@@ -558,33 +551,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
end
##
- # Finds the user's home directory.
- #--
- # Some comments from the ruby-talk list regarding finding the home
- # directory:
- #
- # I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
- # to be depending on HOME in those code samples. I propose that
- # it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
- # least on Win32).
- #++
- #--
- #
- #++
-
- def self.find_home
- Dir.home.dup
- rescue
- if Gem.win_platform?
- File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
- else
- File.expand_path "/"
- end
- end
-
- private_class_method :find_home
-
- ##
# Top level install helper method. Allows you to install gems interactively:
#
# % irb
@@ -1057,13 +1023,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
end
##
- # The home directory for the user.
-
- def self.user_home
- @user_home ||= find_home.tap(&Gem::UNTAINT)
- end
-
- ##
# Is this a windows platform?
def self.win_platform?
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
index 54d8a9c..393f947 100644
--- a/lib/rubygems/config_file.rb
+++ b/lib/rubygems/config_file.rb
@@ -261,7 +261,12 @@ if you believe they were disclosed to a third party.
# Location of RubyGems.org credentials
def credentials_path
- File.join Gem.user_home, '.gem', 'credentials'
+ credentials = File.join Gem.user_home, '.gem', 'credentials'
+ if File.exist? credentials
+ credentials
+ else
+ File.join Gem.data_home, "gem", "credentials"
+ end
end
def load_api_keys
@@ -444,6 +449,10 @@ if you believe they were disclosed to a third party.
# Writes out this config file, replacing its source.
def write
+ unless File.exist?(File.dirname(config_file_name))
+ FileUtils.mkdir_p File.dirname(config_file_name)
+ end
+
File.open config_file_name, 'w' do |io|
io.write to_yaml
end
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index 0e83f1b..2d0b077 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -20,7 +20,13 @@ module Gem
# specified in the environment
def self.default_spec_cache_dir
- File.join Gem.user_home, '.gem', 'specs'
+ default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
+
+ unless File.exist?(default_spec_cache_dir)
+ default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
+ end
+
+ default_spec_cache_dir
end
##
@@ -71,15 +77,91 @@ module Gem
end
##
+ # Finds the user's home directory.
+ #--
+ # Some comments from the ruby-talk list regarding finding the home
+ # directory:
+ #
+ # I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
+ # to be depending on HOME in those code samples. I propose that
+ # it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
+ # least on Win32).
+ #++
+ #--
+ #
+ #++
+
+ def self.find_home
+ Dir.home.dup
+ rescue
+ if Gem.win_platform?
+ File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
+ else
+ File.expand_path "/"
+ end
+ end
+
+ private_class_method :find_home
+
+ ##
+ # The home directory for the user.
+
+ def self.user_home
+ @user_home ||= find_home.tap(&Gem::UNTAINT)
+ end
+
+ ##
# Path for gems in the user's home directory
def self.user_dir
- parts = [Gem.user_home, '.gem', ruby_engine]
+ gem_dir = File.join(Gem.user_home, ".gem")
+ gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
+ parts = [gem_dir, ruby_engine]
parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
File.join parts
end
##
+ # The path to standard location of the user's configuration directory.
+
+ def self.config_home
+ @config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, '.config'))
+ end
+
+ ##
+ # Finds the user's config file
+
+ def self.find_config_file
+ gemrc = File.join Gem.user_home, '.gemrc'
+ if File.exist? gemrc
+ gemrc
+ else
+ File.join Gem.config_home, "gem", "gemrc"
+ end
+ end
+
+ ##
+ # The path to standard location of the user's .gemrc file.
+
+ def self.config_file
+ @config_file ||= find_config_file.tap(&Gem::UNTAINT)
+ end
+
+ ##
+ # The path to standard location of the user's cache directory.
+
+ def self.cache_home
+ @cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, '.cache'))
+ end
+
+ ##
+ # The path to standard location of the user's data directory.
+
+ def self.data_home
+ @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, '.local', 'share'))
+ end
+
+ ##
# How String Gem paths should be split. Overridable for esoteric platforms.
def self.path_separator
@@ -130,14 +212,26 @@ module Gem
# The default signing key path
def self.default_key_path
- File.join Gem.user_home, ".gem", "gem-private_key.pem"
+ default_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
+
+ unless File.exist?(default_key_path)
+ default_key_path = File.join Gem.data_home, "gem", "gem-private_key.pem"
+ end
+
+ default_key_path
end
##
# The default signing certificate chain path
def self.default_cert_path
- File.join Gem.user_home, ".gem", "gem-public_cert.pem"
+ default_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
+
+ unless File.exist?(default_cert_path)
+ default_cert_path = File.join Gem.data_home, "gem", "gem-public_cert.pem"
+ end
+
+ default_cert_path
end
##
diff --git a/lib/rubygems/gemcutter_utilities.rb b/lib/rubygems/gemcutter_utilities.rb
index 2950d94..bba9280 100644
--- a/lib/rubygems/gemcutter_utilities.rb
+++ b/lib/rubygems/gemcutter_utilities.rb
@@ -19,7 +19,7 @@ module Gem::GemcutterUtilities
def add_key_option
add_option('-k', '--key KEYNAME', Symbol,
'Use the given API key',
- 'from ~/.gem/credentials') do |value,options|
+ "from #{Gem.configuration.credentials_path}") do |value,options|
options[:key] = value
end
end
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb
index e56150c..d028254 100644
--- a/lib/rubygems/test_case.rb
+++ b/lib/rubygems/test_case.rb
@@ -363,6 +363,13 @@ class Gem::TestCase < (defined?(Minitest::Test) ? Minitest::Test : MiniTest::Uni
Dir.chdir @tempdir
ENV['HOME'] = @userhome
+ FileUtils.mkdir_p File.join(@userhome, ".gem")
+ File.write File.join(@userhome, ".gemrc"), "--- {}"
+ temp_cred = File.join(@userhome, '.gem', 'credentials')
+ FileUtils.mkdir_p File.dirname(temp_cred)
+ File.write temp_cred, ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
+ File.chmod 0600, temp_cred
+
Gem.instance_variable_set :@user_home, nil
Gem.instance_variable_set :@gemdeps, nil
Gem.instance_variable_set :@env_requirements_by_name, nil
diff --git a/spec/bundler/bundler/env_spec.rb b/spec/bundler/bundler/env_spec.rb
index 7686fe3..9631a10 100644
--- a/spec/bundler/bundler/env_spec.rb
+++ b/spec/bundler/bundler/env_spec.rb
@@ -41,9 +41,15 @@ RSpec.describe Bundler::Env do
end
it "prints user path" do
- with_clear_paths("HOME", "/a/b/c") do
+ if Gem::VERSION >= "3.2.0.pre.1"
+ allow(Gem).to receive(:data_home) { "/a/b/c/.local/share" }
out = described_class.report
- expect(out).to include("User Path /a/b/c/.gem")
+ expect(out).to include("User Path /a/b/c/.local/share/gem")
+ else
+ with_clear_paths("HOME", "/a/b/c") do
+ out = described_class.report
+ expect(out).to include("User Path /a/b/c/.gem")
+ end
end
end
diff --git a/spec/bundler/bundler/friendly_errors_spec.rb b/spec/bundler/bundler/friendly_errors_spec.rb
index e9189b0..8df653c 100644
--- a/spec/bundler/bundler/friendly_errors_spec.rb
+++ b/spec/bundler/bundler/friendly_errors_spec.rb
@@ -6,7 +6,10 @@ require "cgi"
RSpec.describe Bundler, "friendly errors" do
context "with invalid YAML in .gemrc" do
+ let(:config_home) { File.dirname(Gem.configuration.config_file_name) }
+
before do
+ FileUtils.mkdir_p config_home
File.open(Gem.configuration.config_file_name, "w") do |f|
f.write "invalid: yaml: hah"
end
@@ -24,7 +27,11 @@ RSpec.describe Bundler, "friendly errors" do
bundle :install, :env => { "DEBUG" => "true" }
- expect(err).to include("Failed to load #{home(".gemrc")}")
+ if Gem::VERSION >= "3.2.0.pre.1"
+ expect(err).to include("Failed to load #{File.join(config_home, "gemrc")}")
+ else
+ expect(err).to include("Failed to load #{home(".gemrc")}")
+ end
expect(exitstatus).to eq(0) if exitstatus
end
end
diff --git a/test/rdoc/test_rdoc_ri_driver.rb b/test/rdoc/test_rdoc_ri_driver.rb
index 6f17fec..1a8ac3d 100644
--- a/test/rdoc/test_rdoc_ri_driver.rb
+++ b/test/rdoc/test_rdoc_ri_driver.rb
@@ -15,6 +15,8 @@ class TestRDocRIDriver < RDoc::TestCase
@orig_ri = ENV['RI']
@orig_home = ENV['HOME']
ENV['HOME'] = @tmpdir
+ @rdoc_home = File.join ENV["HOME"], ".rdoc"
+ FileUtils.mkdir_p @rdoc_home
ENV.delete 'RI'
@options = RDoc::RI::Driver.default_options
@@ -81,7 +83,7 @@ class TestRDocRIDriver < RDoc::TestCase
@RM::Rule.new(1),
@RM::Paragraph.new('Also found in:'),
@RM::Verbatim.new("ruby core", "\n",
- "~/.rdoc", "\n"))
+ @rdoc_home, "\n"))
assert_equal expected, out
end
@@ -231,7 +233,7 @@ class TestRDocRIDriver < RDoc::TestCase
doc(
head(1, 'Foo::Bar#blah'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
head(3, 'Implementation from Bar'),
rule(1),
verb("blah(5) => 5\n",
@@ -254,7 +256,7 @@ class TestRDocRIDriver < RDoc::TestCase
doc(
head(1, 'Qux#aliased'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
rule(1),
blank_line,
para('alias comment'),
@@ -280,7 +282,7 @@ class TestRDocRIDriver < RDoc::TestCase
doc(
head(1, 'Foo::Bar#attr'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
rule(1),
blank_line,
blank_line)
@@ -299,7 +301,7 @@ class TestRDocRIDriver < RDoc::TestCase
doc(
head(1, 'Bar#inherit'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
head(3, 'Implementation from Foo'),
rule(1),
blank_line,
@@ -343,13 +345,13 @@ class TestRDocRIDriver < RDoc::TestCase
doc(
head(1, 'Foo#inherit'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
rule(1),
blank_line,
blank_line,
head(1, 'Foo#override'),
blank_line,
- para('(from ~/.rdoc)'),
+ para("(from #{@rdoc_home})"),
rule(1),
blank_line,
para('must not be displayed in Bar#override'),
@@ -802,7 +804,7 @@ Foo::Bar#bother
@driver.display_page 'home:README'
end
- assert_match %r%= README pages in ~/\.rdoc%, out
+ assert_match %r%= README pages in #{@rdoc_home}%, out
assert_match %r%README\.rdoc%, out
assert_match %r%README\.md%, out
end
@@ -856,7 +858,7 @@ Foo::Bar#bother
@driver.display_page_list @store1
end
- assert_match %r%= Pages in ~/\.rdoc%, out
+ assert_match %r%= Pages in #{@rdoc_home}%, out
assert_match %r%README\.rdoc%, out
end
@@ -876,7 +878,7 @@ Foo::Bar#bother
@driver.display_page_list @store1
end
- assert_match %r%= Pages in ~/\.rdoc%, out
+ assert_match %r%= Pages in #{@rdoc_home}%, out
assert_match %r%README\.rdoc%, out
assert_match %r%OTHER\.rdoc%, out
end
diff --git a/test/rdoc/test_rdoc_store.rb b/test/rdoc/test_rdoc_store.rb
index 8332d92..076b8e7 100644
--- a/test/rdoc/test_rdoc_store.rb
+++ b/test/rdoc/test_rdoc_store.rb
@@ -317,6 +317,9 @@ class TestRDocStore < XrefTestCase
end
def test_friendly_path
+ @orig_xdg_data_home = ENV['XDG_DATA_HOME']
+ ENV.delete('XDG_DATA_HOME')
+
@s.path = @tmpdir
@s.type = nil
assert_equal @s.path, @s.friendly_path
@@ -331,11 +334,13 @@ class TestRDocStore < XrefTestCase
assert_equal "ruby site", @s.friendly_path
@s.type = :home
- assert_equal "~/.rdoc", @s.friendly_path
+ assert_equal File.expand_path("~/.local/share/rdoc"), @s.friendly_path
@s.type = :gem
@s.path = "#{@tmpdir}/gem_repository/doc/gem_name-1.0/ri"
assert_equal "gem gem_name-1.0", @s.friendly_path
+ ensure
+ ENV['XDG_DATA_HOME'] = @orig_xdg_data_home
end
def test_dry_run
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index 1f5e0e6..5f70a2a 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1359,6 +1359,8 @@ class TestGem < Gem::TestCase
parts = [@userhome, '.gem', Gem.ruby_engine]
parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
+ FileUtils.mkdir_p File.join(parts)
+
assert_equal File.join(parts), Gem.user_dir
end
diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb
index a2e8f28..ca9f8b6 100644
--- a/test/rubygems/test_gem_commands_build_command.rb
+++ b/test/rubygems/test_gem_commands_build_command.rb
@@ -376,7 +376,6 @@ class TestGemCommandsBuildCommand < Gem::TestCase
skip 'openssl is missing' unless defined?(OpenSSL::SSL) && !java_platform?
gem_path = File.join Gem.user_home, ".gem"
- Dir.mkdir gem_path
Gem::Security.trust_dir
@@ -420,7 +419,6 @@ class TestGemCommandsBuildCommand < Gem::TestCase
skip 'openssl is missing' unless defined?(OpenSSL::SSL) && !java_platform?
gem_path = File.join Gem.user_home, ".gem"
- Dir.mkdir gem_path
Gem::Security.trust_dir
diff --git a/test/rubygems/test_gem_commands_cert_command.rb b/test/rubygems/test_gem_commands_cert_command.rb
index fd1e66b..bb9ed9e 100644
--- a/test/rubygems/test_gem_commands_cert_command.rb
+++ b/test/rubygems/test_gem_commands_cert_command.rb
@@ -597,7 +597,6 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
def test_execute_re_sign
gem_path = File.join Gem.user_home, ".gem"
- Dir.mkdir gem_path
path = File.join @tempdir, 'cert.pem'
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
@@ -628,9 +627,6 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
end
def test_execute_re_sign_with_cert_expiration_length_days
- gem_path = File.join Gem.user_home, ".gem"
- Dir.mkdir gem_path
-
path = File.join @tempdir, 'cert.pem'
Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
diff --git a/test/rubygems/test_gem_commands_signout_command.rb b/test/rubygems/test_gem_commands_signout_command.rb
index 814b55c..9a47daf 100644
--- a/test/rubygems/test_gem_commands_signout_command.rb
+++ b/test/rubygems/test_gem_commands_signout_command.rb
@@ -8,6 +8,7 @@ class TestGemCommandsSignoutCommand < Gem::TestCase
def setup
super
+ File.delete Gem.configuration.credentials_path if File.exist?(Gem.configuration.credentials_path)
@cmd = Gem::Commands::SignoutCommand.new
end
diff --git a/test/rubygems/test_gem_config_file.rb b/test/rubygems/test_gem_config_file.rb
index 260a949..d31d55e 100644
--- a/test/rubygems/test_gem_config_file.rb
+++ b/test/rubygems/test_gem_config_file.rb
@@ -170,7 +170,7 @@ class TestGemConfigFile < Gem::TestCase
assert_nil @cfg.instance_variable_get :@api_keys
temp_cred = File.join Gem.user_home, '.gem', 'credentials'
- FileUtils.mkdir File.dirname(temp_cred)
+ FileUtils.mkdir_p File.dirname(temp_cred)
File.open temp_cred, 'w', 0600 do |fp|
fp.puts ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
end
@@ -296,7 +296,7 @@ if you believe they were disclosed to a third party.
def test_load_api_keys
temp_cred = File.join Gem.user_home, '.gem', 'credentials'
- FileUtils.mkdir File.dirname(temp_cred)
+ FileUtils.mkdir_p File.dirname(temp_cred)
File.open temp_cred, 'w', 0600 do |fp|
fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
fp.puts ":other: a5fdbb6ba150cbb83aad2bb2fede64c"
diff --git a/test/rubygems/test_gem_source.rb b/test/rubygems/test_gem_source.rb
index 05e443c..24b8edb 100644
--- a/test/rubygems/test_gem_source.rb
+++ b/test/rubygems/test_gem_source.rb
@@ -230,7 +230,7 @@ class TestGemSource < Gem::TestCase
end
def test_update_cache_eh_home_nonexistent
- FileUtils.rmdir Gem.user_home
+ FileUtils.rm_rf Gem.user_home
refute @source.update_cache?
end
diff --git a/test/rubygems/test_gem_spec_fetcher.rb b/test/rubygems/test_gem_spec_fetcher.rb
index b754711..d1633c4 100644
--- a/test/rubygems/test_gem_spec_fetcher.rb
+++ b/test/rubygems/test_gem_spec_fetcher.rb
@@ -33,7 +33,7 @@ class TestGemSpecFetcher < Gem::TestCase
end
def test_initialize_nonexistent_home_dir
- FileUtils.rmdir Gem.user_home
+ FileUtils.rm_rf Gem.user_home
assert Gem::SpecFetcher.new
end