mirror of
https://github.com/clearml/wexpect-venv
synced 2025-01-31 02:46:59 +00:00
72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
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)
|
|
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)
|
|
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!
|
|
|
|
|
|
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)
|
|
|
|
p1 = wexpect.spawn('ls', port=4321)
|
|
p2 = wexpect.spawn('ls', port=4322)
|
|
p3 = wexpect.spawn('ls', port=4323)
|
|
p4 = wexpect.spawn('ls', port=4324)
|
|
|
|
@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')
|