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/