aboutsummaryrefslogtreecommitdiffstats
path: root/test/ruby/test_io.rb
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-05 22:49:29 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-05 22:49:29 +0000
commitc3c1d6c60d482e29c7997c85969f958e11b0316f (patch)
treeca197475a17a403d40d879234f2d210c7e2f07b9 /test/ruby/test_io.rb
parent31468275212035ab544997964bd95a7dc48a981d (diff)
downloadruby-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/ruby/test_io.rb')
-rw-r--r--test/ruby/test_io.rb33
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