aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_pty.rb
diff options
context:
space:
mode:
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