diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-07-19 03:16:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-07-19 03:16:08 +0000 |
commit | 77f1277e1d154aa7858e9584559d648b1df2865d (patch) | |
tree | c9e4ac31e34f1a39c7caa3828579477b64b80af4 /test/ruby/test_rand.rb | |
parent | 2cc3946d0ed8a21a7bf801b2a1310475f706fc3a (diff) |
test_rand.rb: improved assert_fork_status
* test/ruby/test_rand.rb (assert_fork_status): deal with errors
from children.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_rand.rb')
-rw-r--r-- | test/ruby/test_rand.rb | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index 79befa8f04..7b4ae07ee9 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -429,9 +429,20 @@ END def assert_fork_status(n, mesg, &block) IO.pipe do |r, w| (1..n).map do - p1 = fork {w.puts(block.call.to_s)} - _, st = Process.waitpid2(p1) - assert_send([st, :success?], mesg) + st = desc = nil + IO.pipe do |re, we| + p1 = fork { + re.close + STDERR.reopen(we) + w.puts(block.call.to_s) + } + we.close + err = Thread.start {re.read} + _, st = Process.waitpid2(p1) + desc = FailDesc[st, mesg, err.value] + end + assert(!st.signaled?, desc) + assert(st.success?, mesg) r.gets.strip end end |