[前][次][番号順一覧][スレッド一覧]

ruby-changes:13919

From: nobu <ko1@a...>
Date: Thu, 12 Nov 2009 06:47:18 +0900 (JST)
Subject: [ruby-changes:13919] Ruby:r25723 (trunk): * lib/tempfile.rb (Tempfile#initialize): option hash may not be

nobu	2009-11-12 06:42:40 +0900 (Thu, 12 Nov 2009)

  New Revision: 25723

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25723

  Log:
    * lib/tempfile.rb (Tempfile#initialize): option hash may not be
      given.  [ruby-core:26681]

  Modified files:
    trunk/ChangeLog
    trunk/lib/tempfile.rb
    trunk/test/test_tempfile.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25722)
+++ ChangeLog	(revision 25723)
@@ -1,3 +1,8 @@
+Thu Nov 12 06:42:38 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/tempfile.rb (Tempfile#initialize): option hash may not be
+	  given.  [ruby-core:26681]
+
 Thu Nov 12 01:29:15 2009  Yusuke Endoh  <mame@t...>
 
 	* enumerator.c (yielder_yield_push): Yielder#<< should return self.
Index: lib/tempfile.rb
===================================================================
--- lib/tempfile.rb	(revision 25722)
+++ lib/tempfile.rb	(revision 25723)
@@ -133,11 +133,17 @@
 
     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)
Index: test/test_tempfile.rb
===================================================================
--- test/test_tempfile.rb	(revision 25722)
+++ test/test_tempfile.rb	(revision 25723)
@@ -3,6 +3,11 @@
 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 @@
 
   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 @@
     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
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]