aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_pty.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-14 03:14:00 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-10-14 03:14:00 +0000
commit039f12b5bb7bec277706f76183a91632c3f1105c (patch)
tree1cdd9ac190f675d33306fbbcd9d04ec7e79943d8 /test/test_pty.rb
parent3a0e582e1fbeef0ab7ef7af8c94e4b711331259a (diff)
downloadruby-039f12b5bb7bec277706f76183a91632c3f1105c.tar.gz
* ext/pty/pty.c (pty_check): should return nil until the child
terminates or stops. [ruby-dev:44600] [Bug #2642] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/test_pty.rb')
-rw-r--r--test/test_pty.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/test_pty.rb b/test/test_pty.rb
index fc8cd95c8b..025cafc8f8 100644
--- a/test/test_pty.rb
+++ b/test/test_pty.rb
@@ -163,5 +163,37 @@ class TestPTY < Test::Unit::TestCase
}
end
end
+
+ def test_pty_check_default
+ st1 = st2 = pid = nil
+ `echo` # preset $?
+ PTY.spawn("cat") do |r,w,id|
+ pid = id
+ st1 = PTY.check(pid)
+ w.close
+ r.close
+ sleep(0.1)
+ st2 = PTY.check(pid)
+ end
+ assert_equal(pid, st1.pid) if st1
+ assert_nil(st1)
+ assert_equal(pid, st2.pid)
+ end
+
+ def test_pty_check_raise
+ bug2642 = '[ruby-dev:44600]'
+ st1 = st2 = pid = nil
+ PTY.spawn("cat") do |r,w,id|
+ pid = id
+ assert_nothing_raised(PTY::ChildExited, bug2642) {st1 = PTY.check(pid, true)}
+ w.close
+ r.close
+ sleep(0.1)
+ st2 = assert_raise(PTY::ChildExited, bug2642) {PTY.check(pid, true)}.status
+ end
+ assert_equal(pid, st1.pid) if st1
+ assert_nil(st1)
+ assert_equal(pid, st2.pid)
+ end
end if defined? PTY