diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-05 22:49:29 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-09-05 22:49:29 +0000 |
commit | c3c1d6c60d482e29c7997c85969f958e11b0316f (patch) | |
tree | ca197475a17a403d40d879234f2d210c7e2f07b9 /test | |
parent | 31468275212035ab544997964bd95a7dc48a981d (diff) | |
download | ruby-c3c1d6c60d482e29c7997c85969f958e11b0316f.tar.gz |
test/ruby/test_io.rb: avoid EBADF
* test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF
[ruby-core:64773] [ruby-core:64775]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_io.rb | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 3bba329344..0afcbbac0c 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -2866,24 +2866,29 @@ End 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 |