123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # -*- coding: utf-8 -*-
- """winpty wrapper tests."""
- # yapf: disable
- # Standard library imports
- import os
- # Third party imports
- from flaky import flaky
- from winpty.winpty_wrapper import PTY, PY2
- from winpty.ptyprocess import which
- import pytest
- # yapf: enable
- CMD = which('cmd')
- if PY2:
- CMD = unicode(CMD) # noqa
- @pytest.fixture(scope='module')
- def pty_fixture():
- def _pty_factory():
- pty = PTY(80, 25)
- pty.spawn(CMD)
- return pty
- return _pty_factory
- @flaky(max_runs=4, min_passes=1)
- def test_read(pty_fixture):
- pty = pty_fixture()
- loc = os.getcwd()
- line = ''
- while loc not in line:
- line += pty.read().decode('utf-8')
- assert loc in line
- pty.close()
- del pty
- def test_write(pty_fixture):
- pty = pty_fixture()
- line = pty.read()
- while len(line) < 10:
- line = pty.read()
- text = u'Eggs, ham and spam ünicode'
- pty.write(text)
- line = u''
- while text not in line:
- line += pty.read().decode('utf-8')
- assert text in line
- pty.close()
- del pty
- def test_isalive(pty_fixture):
- pty = pty_fixture()
- pty.write(u'exit\r\n')
- text = u'exit'
- line = u''
- while text not in line:
- line += pty.read().decode('utf-8')
- while pty.isalive():
- pty.read()
- continue
- assert not pty.isalive()
- pty.close()
- del pty
|