move around and reformat code

This commit is contained in:
Scott Taylor 2011-05-02 21:55:18 -04:00
parent 903b8c5fd8
commit c2d7f46bcb
3 changed files with 46 additions and 51 deletions

View File

@ -107,6 +107,52 @@ module FakeFS
FileSystem.current_dir.to_s
end
# This code has been borrowed from Rubinius
def self.mktmpdir(prefix_suffix = nil, tmpdir = nil)
case prefix_suffix
when nil
prefix = "d"
suffix = ""
when String
prefix = prefix_suffix
suffix = ""
when Array
prefix = prefix_suffix[0]
suffix = prefix_suffix[1]
else
raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
end
t = Time.now.strftime("%Y%m%d")
n = nil
begin
path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
path << "-#{n}" if n
path << suffix
mkdir(path, 0700)
rescue Errno::EEXIST
n ||= 0
n += 1
retry
end
if block_given?
begin
yield path
ensure
require 'fileutils'
# This here was using FileUtils.remove_entry_secure instead of just
# .rm_r. However, the security concerns that apply to
# .rm_r/.remove_entry_secure shouldn't apply to a test fake
# filesystem. :^)
FileUtils.rm_r path
end
else
path
end
end
class << self
alias_method :getwd, :pwd
alias_method :rmdir, :delete

View File

@ -9,4 +9,3 @@ require 'fakefs/fileutils'
require 'fakefs/file'
require 'fakefs/file_test'
require 'fakefs/dir'
require 'fakefs/tmpdir'

View File

@ -1,50 +0,0 @@
require 'fakefs/fileutils'
module FakeFS
class Dir
def Dir::mktmpdir(prefix_suffix=nil, tmpdir=nil)
# This code has been borrowed from Rubinius. Thanks, guys! :-)
case prefix_suffix
when nil
prefix = "d"
suffix = ""
when String
prefix = prefix_suffix
suffix = ""
when Array
prefix = prefix_suffix[0]
suffix = prefix_suffix[1]
else
raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
end
tmpdir ||= Dir.tmpdir
t = Time.now.strftime("%Y%m%d")
n = nil
begin
path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
path << "-#{n}" if n
path << suffix
Dir.mkdir(path, 0700)
rescue Errno::EEXIST
n ||= 0
n += 1
retry
end
if block_given?
begin
yield path
ensure
# This here was using FileUtils.remove_entry_secure instead of just
# .rm_r. However, the security concerns that apply to
# .rm_r/.remove_entry_secure shouldn't apply to a test fake
# filesystem. :^)
FileUtils.rm_r path
end
else
path
end
end
end
end