Bug #4930 ยป issue4930.patch
| lib/rubygems.rb (working copy) | ||
|---|---|---|
|
def self.ensure_gem_subdirectories dir = Gem.dir
|
||
|
require 'fileutils'
|
||
|
old_umask = File.umask
|
||
|
File.umask(old_umask | 022)
|
||
|
%w[cache doc gems specifications].each do |name|
|
||
|
subdir = File.join dir, name
|
||
|
next if File.exist? subdir
|
||
|
FileUtils.mkdir_p subdir rescue nil # in case of perms issues -- lame
|
||
|
end
|
||
|
ensure
|
||
|
File.umask(old_umask)
|
||
|
end
|
||
|
##
|
||
| test/rubygems/test_gem.rb (working copy) | ||
|---|---|---|
|
assert File.directory? File.join(@gemhome, "cache")
|
||
|
end
|
||
|
def test_self_ensure_gem_directories_safe_permissions
|
||
|
FileUtils.rm_r @gemhome
|
||
|
Gem.use_paths @gemhome
|
||
|
old_umask = File.umask
|
||
|
File.umask(0)
|
||
|
Gem.ensure_gem_subdirectories @gemhome
|
||
|
assert_equal 0, File::Stat.new(@gemhome).mode & 022
|
||
|
assert_equal 0, File::Stat.new(File.join(@gemhome, "cache")).mode & 022
|
||
|
ensure
|
||
|
File.umask(old_umask)
|
||
|
end
|
||
|
def test_self_ensure_gem_directories_missing_parents
|
||
|
gemdir = File.join @tempdir, 'a/b/c/gemdir'
|
||
|
FileUtils.rm_rf File.join(@tempdir, 'a') rescue nil
|
||