blob: 6cc096a2dc33cd08aa8a1ad5f6865fb33fca92eb [file] [log] [blame]
""" Test cases for PtyProcess.wait method. """
import time
import unittest
from ptyprocess import PtyProcess
class TestWaitAfterTermination(unittest.TestCase):
"""Various test cases for PtyProcess.wait()"""
def test_wait_true_shortproc(self):
"""Ensure correct (True) wait status for short-lived processes."""
child = PtyProcess.spawn(['true'])
# Wait so we're reasonable sure /bin/true has terminated
time.sleep(0.2)
self.assertEqual(child.wait(), 0)
def test_wait_false_shortproc(self):
"""Ensure correct (False) wait status for short-lived processes."""
child = PtyProcess.spawn(['false'])
# Wait so we're reasonable sure /bin/false has terminated
time.sleep(0.2)
self.assertNotEqual(child.wait(), 0)
def test_wait_twice_longproc(self):
"""Ensure correct wait status when called twice."""
# previous versions of ptyprocess raises PtyProcessError when
# wait was called more than once with "Cannot wait for dead child
# process.". No longer true since v0.5.
child = PtyProcess.spawn(['sleep', '1'])
# this call to wait() will block for 1s
for count in range(2):
self.assertEqual(child.wait(), 0, count)