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

ruby-changes:22405

From: ayumin <ko1@a...>
Date: Tue, 7 Feb 2012 14:02:43 +0900 (JST)
Subject: [ruby-changes:22405] ayumin:r34454 (ruby_1_9_3): merge revision(s) 34253:

ayumin	2012-02-07 14:02:32 +0900 (Tue, 07 Feb 2012)

  New Revision: 34454

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

  Log:
    merge revision(s) 34253:
    
    * test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
      test_autoclose_true_closed_by_finalizer): skip if IO objects are
      not recycled yet. [ruby-dev:45098] [Bug #5850]

  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/test/ruby/test_io.rb
    branches/ruby_1_9_3/version.h

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 34453)
+++ ruby_1_9_3/ChangeLog	(revision 34454)
@@ -1,3 +1,9 @@
+Tue Feb  7 14:02:32 2012  CHIKANAGA Tomoyuki  <nagachika00@g...>
+
+	* test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
+	  test_autoclose_true_closed_by_finalizer): skip if IO objects are
+	  not recycled yet. [ruby-dev:45098] [Bug #5850]
+
 Tue Feb  7 13:59:26 2012  CHIKANAGA Tomoyuki  <nagachika00@g...>
 
 	* gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
Index: ruby_1_9_3/version.h
===================================================================
--- ruby_1_9_3/version.h	(revision 34453)
+++ ruby_1_9_3/version.h	(revision 34454)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 47
+#define RUBY_PATCHLEVEL 48
 
 #define RUBY_RELEASE_DATE "2012-02-07"
 #define RUBY_RELEASE_YEAR 2012
Index: ruby_1_9_3/test/ruby/test_io.rb
===================================================================
--- ruby_1_9_3/test/ruby/test_io.rb	(revision 34453)
+++ ruby_1_9_3/test/ruby/test_io.rb	(revision 34454)
@@ -6,6 +6,7 @@
 require 'stringio'
 require 'timeout'
 require 'tempfile'
+require 'weakref'
 require_relative 'envutil'
 
 class TestIO < Test::Unit::TestCase
@@ -1382,12 +1383,11 @@
 
   def try_fdopen(fd, autoclose = true, level = 100)
     if level > 0
-      try_fdopen(fd, autoclose, level - 1)
+      f = try_fdopen(fd, autoclose, level - 1)
       GC.start
-      level
+      f
     else
-      IO.for_fd(fd, autoclose: autoclose)
-      nil
+      WeakRef.new(IO.for_fd(fd, autoclose: autoclose))
     end
   end
 
@@ -1401,7 +1401,7 @@
     f.autoclose = false
     assert_equal(false, f.autoclose?)
     f.close
-    assert_nothing_raised(Errno::EBADF) {t.close}
+    assert_nothing_raised(Errno::EBADF, feature2250) {t.close}
 
     t.open
     f = IO.for_fd(t.fileno, autoclose: false)
@@ -1409,15 +1409,38 @@
     f.autoclose = true
     assert_equal(true, f.autoclose?)
     f.close
-    assert_raise(Errno::EBADF) {t.close}
+    assert_raise(Errno::EBADF, feature2250) {t.close}
+  end
 
+  def test_autoclose_true_closed_by_finalizer
+    feature2250 = '[ruby-core:26222]'
+    pre = 'ft2250'
     t = Tempfile.new(pre)
-    try_fdopen(t.fileno)
-    assert_raise(Errno::EBADF) {t.close}
+    w = try_fdopen(t.fileno)
+    begin
+      w.close
+      begin
+        t.close
+      rescue Errno::EBADF
+      end
+      skip "expect IO object was GC'ed but not recycled yet"
+    rescue WeakRef::RefError
+      assert_raise(Errno::EBADF, feature2250) {t.close}
+    end
+  end
 
+  def test_autoclose_false_closed_by_finalizer
+    feature2250 = '[ruby-core:26222]'
+    pre = 'ft2250'
     t = Tempfile.new(pre)
-    try_fdopen(t.fileno, false)
-    assert_nothing_raised(Errno::EBADF) {t.close}
+    w = try_fdopen(t.fileno, false)
+    begin
+      w.close
+      t.close
+      skip "expect IO object was GC'ed but not recycled yet"
+    rescue WeakRef::RefError
+      assert_nothing_raised(Errno::EBADF, feature2250) {t.close}
+    end
   end
 
   def test_open_redirect

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

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