mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
3146827521
commit
c3c1d6c60d
2 changed files with 24 additions and 14 deletions
|
@ -1,3 +1,8 @@
|
|||
Sat Sep 6 07:46:51 2014 Eric Wong <e@80x24.org>
|
||||
|
||||
* 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@fsij.org>
|
||||
|
||||
* process.c (rb_f_exec): Call before_exec_async_signal_safe and
|
||||
|
|
|
@ -2866,24 +2866,29 @@ End
|
|||
data = "a" * 100
|
||||
th = nil
|
||||
with_pipe do |r,w|
|
||||
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
|
||||
end
|
||||
end
|
||||
assert_equal(data, buf, bug6099)
|
||||
rescue RuntimeError # can't modify string; temporarily locked
|
||||
ensure
|
||||
if th
|
||||
begin
|
||||
th.join
|
||||
rescue IOError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_advise_pipe
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue