ruby-changes:35340
From: normal <ko1@a...>
Date: Sat, 6 Sep 2014 07:49:57 +0900 (JST)
Subject: [ruby-changes:35340] normal:r47422 (trunk): test/ruby/test_io.rb: avoid EBADF
normal 2014-09-06 07:49:29 +0900 (Sat, 06 Sep 2014) New Revision: 47422 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47422 Log: test/ruby/test_io.rb: avoid EBADF * test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF [ruby-core:64773] [ruby-core:64775] Modified files: trunk/ChangeLog trunk/test/ruby/test_io.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 47421) +++ ChangeLog (revision 47422) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sat Sep 6 07:46:51 2014 Eric Wong <e@8...> + + * test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF + [ruby-core:64773] [ruby-core:64775] + Sat Sep 6 01:34:31 2014 Tanaka Akira <akr@f...> * process.c (rb_f_exec): Call before_exec_async_signal_safe and Index: test/ruby/test_io.rb =================================================================== --- test/ruby/test_io.rb (revision 47421) +++ test/ruby/test_io.rb (revision 47422) @@ -2866,24 +2866,29 @@ End https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io.rb#L2866 data = "a" * 100 th = nil with_pipe do |r,w| - r.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) - th = Thread.new {r.readpartial(100, buf)} - Thread.pass until th.stop? - buf.replace("") - assert_empty(buf, bug6099) - assert_predicate(th, :alive?) - w.write(data) - Thread.pass while th.alive? - end - assert_equal(data, buf, bug6099) - rescue RuntimeError # can't modify string; temporarily locked - ensure - if th begin + r.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK) + th = Thread.new {r.readpartial(100, buf)} + + Thread.pass until th.stop? + + assert_equal 100, buf.bytesize + + begin + buf.replace("") + rescue RuntimeError => e + assert_match(/can't modify string; temporarily locked/, e.message) + Thread.pass + end until buf.empty? + + assert_empty(buf, bug6099) + assert_predicate(th, :alive?) + w.write(data) + Thread.pass while th.alive? th.join - rescue IOError end end + assert_equal(data, buf, bug6099) end def test_advise_pipe -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/