wexpect-venv/tests/test_destructor.py

72 lines
2.1 KiB
Python
Raw Normal View History

import wexpect
import unittest
from tests import PexpectTestCase
import gc
import platform
import time
class TestCaseDestructor(PexpectTestCase.PexpectTestCase):
def test_destructor (self):
if platform.python_implementation() != 'CPython':
# Details of garbage collection are different on other implementations
return 'SKIP'
gc.collect()
time.sleep(2)
2020-01-25 22:52:08 +00:00
p1 = wexpect.spawn('ls', port=4321)
p2 = wexpect.spawn('ls', port=4322)
p3 = wexpect.spawn('ls', port=4323)
p4 = wexpect.spawn('ls', port=4324)
p1.expect(wexpect.EOF)
p2.expect(wexpect.EOF)
p3.expect(wexpect.EOF)
p4.expect(wexpect.EOF)
2020-01-25 22:52:08 +00:00
p1.kill()
p2.kill()
p3.kill()
p4.kill()
p1 = None
p2 = None
p3 = None
p4 = None
gc.collect()
time.sleep(2) # Some platforms are slow at gc... Solaris!
2020-01-25 22:52:08 +00:00
2020-01-25 22:52:08 +00:00
p1 = wexpect.spawn('ls', port=4321)
p2 = wexpect.spawn('ls', port=4322)
p3 = wexpect.spawn('ls', port=4323)
p4 = wexpect.spawn('ls', port=4324)
p1.kill()
p2.kill()
p3.kill()
p4.kill()
del (p1)
del (p2)
del (p3)
del (p4)
gc.collect()
time.sleep(2)
2020-01-25 22:52:08 +00:00
p1 = wexpect.spawn('ls', port=4321)
p2 = wexpect.spawn('ls', port=4322)
p3 = wexpect.spawn('ls', port=4323)
p4 = wexpect.spawn('ls', port=4324)
2020-04-06 11:07:49 +00:00
@unittest.skipIf(wexpect.spawn_class_name == 'legacy_wexpect', "legacy unsupported")
def test_failed_termination(self):
"Test failed termination."
child = wexpect.spawn('cat')
delayafterterminate_orig = child.delayafterterminate
child.delayafterterminate =.1
msg = 'Child has not been terminated even after it was killed.'
with self.assertRaisesRegex(wexpect.ExceptionPexpect, msg):
child.terminate()
child.isalive(timeout = delayafterterminate_orig)
if __name__ == '__main__':
unittest.main()
suite = unittest.makeSuite(TestCaseDestructor,'test')