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
|