* lib/tempfile.rb (Tempfile#initialize): option hash may not be

given.  [ruby-core:26681]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-11-11 21:42:40 +00:00
parent 9a751c21e7
commit 55179696b2
3 changed files with 31 additions and 6 deletions

View File

@ -1,3 +1,8 @@
Thu Nov 12 06:42:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/tempfile.rb (Tempfile#initialize): option hash may not be
given. [ruby-core:26681]
Thu Nov 12 01:29:15 2009 Yusuke Endoh <mame@tsg.ne.jp>
* enumerator.c (yielder_yield_push): Yielder#<< should return self.

View File

@ -133,11 +133,17 @@ class Tempfile < DelegateClass(File)
create(basename, *rest) do |tmpname, n, opts|
lock = tmpname + '.lock'
mode = opts.delete(:mode) || 0
mode = File::RDWR|File::CREAT|File::EXCL|mode
mode = File::RDWR|File::CREAT|File::EXCL
perm = 0600
if opts
mode |= opts.delete(:mode) || 0
opts[:perm] = perm
else
opts = perm
end
self.class.mkdir(lock)
begin
@data[1] = @tmpfile = File.open(tmpname, mode, 0600, *opts)
@data[1] = @tmpfile = File.open(tmpname, mode, opts)
@data[0] = @tmpname = tmpname
ensure
self.class.rmdir(lock)

View File

@ -3,6 +3,11 @@ require 'tempfile'
require_relative 'ruby/envutil'
class TestTempfile < Test::Unit::TestCase
def initialize(*)
super
@tempfile = nil
end
def tempfile(*args, &block)
t = Tempfile.new(*args, &block)
@tempfile = (t unless block)
@ -45,13 +50,13 @@ class TestTempfile < Test::Unit::TestCase
def test_basename
t = tempfile("foo")
assert_match /^foo/, File.basename(t.path)
assert_match(/^foo/, File.basename(t.path))
end
def test_basename_with_suffix
t = tempfile(["foo", ".txt"])
assert_match /^foo/, File.basename(t.path)
assert_match /\.txt$/, File.basename(t.path)
assert_match(/^foo/, File.basename(t.path))
assert_match(/\.txt$/, File.basename(t.path))
end
def test_unlink
@ -284,5 +289,14 @@ puts Tempfile.new('foo').path
t.rewind
assert_equal(Encoding::ASCII_8BIT,t.read.encoding)
end
def test_binmode
t = tempfile("TEST", mode: IO::BINARY)
if IO::BINARY.nonzero?
assert(t.binmode?)
else
assert_equal(0600, t.stat.mode & 0777)
end
end
end