From 82a9ca296b69144212c10b66eb932555310bd973 Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 17 Aug 2007 05:41:10 +0000 Subject: * bootstraptest/runner.rb (in_temporary_working_directory): use Dir.mktmpdir to create and remove temporary directory. (Dir.mktmpdir): define if not available. [ruby-dev:31431] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bootstraptest/runner.rb | 48 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) (limited to 'bootstraptest/runner.rb') diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb index bada520629..117f030365 100644 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -13,10 +13,38 @@ rescue LoadError retry end +if !Dir.respond_to?(:mktmpdir) + # copied from lib/tmpdir.rb + def Dir.mktmpdir(prefix="d", tmpdir=nil) + 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 + Dir.mkdir(path, 0700) + rescue Errno::EEXIST + n ||= 0 + n += 1 + retry + end + + if block_given? + begin + yield path + ensure + FileUtils.remove_entry_secure path + end + else + path + end + end +end + def main @ruby = File.expand_path('miniruby') @verbose = false - dir = File.join(Dir.tmpdir, 'bootstraptest.tmpwd') + dir = nil quiet = false tests = nil ARGV.delete_if {|arg| @@ -176,11 +204,19 @@ def error(msg, additional_message) end def in_temporary_working_directory(dir) - FileUtils.rm_rf dir - Dir.mkdir dir - Dir.chdir(dir) { - yield - } + if dir + FileUtils.rm_rf dir + Dir.mkdir dir + Dir.chdir(dir) { + yield + } + else + Dir.mktmpdir("bootstraptest.tmpwd") {|d| + Dir.chdir(d) { + yield + } + } + end end def cleanup_coredump -- cgit v1.2.3