summaryrefslogtreecommitdiff
path: root/tests/test_async.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_async.py')
-rw-r--r--tests/test_async.py71
1 files changed, 39 insertions, 32 deletions
diff --git a/tests/test_async.py b/tests/test_async.py
index 466d56f..dd9179a 100644
--- a/tests/test_async.py
+++ b/tests/test_async.py
@@ -4,83 +4,90 @@ except ImportError:
asyncio = None
import gc
-import sys
import unittest
+from sys import version_info as py_version_info
import pexpect
from pexpect import replwrap
+
from .PexpectTestCase import PexpectTestCase
+
def run(coro):
- return asyncio.get_event_loop().run_until_complete(coro)
+ if py_version_info >= (3, 7):
+ # get_running_loop, new in 3.7, is preferred to get_event_loop
+ return asyncio.get_running_loop().run_until_complete(coro)
+ else:
+ return asyncio.get_event_loop().run_until_complete(coro)
+
@unittest.skipIf(asyncio is None, "Requires asyncio")
class AsyncTests(PexpectTestCase):
def test_simple_expect(self):
- p = pexpect.spawn('cat')
- p.sendline('Hello asyncio')
- coro = p.expect(['Hello', pexpect.EOF] , async_=True)
+ p = pexpect.spawn("cat")
+ p.sendline("Hello asyncio")
+ coro = p.expect(["Hello", pexpect.EOF], async_=True)
assert run(coro) == 0
- print('Done')
+ print("Done")
def test_timeout(self):
- p = pexpect.spawn('cat')
- coro = p.expect('foo', timeout=1, async_=True)
+ p = pexpect.spawn("cat")
+ coro = p.expect("foo", timeout=1, async_=True)
with self.assertRaises(pexpect.TIMEOUT):
run(coro)
- p = pexpect.spawn('cat')
- coro = p.expect(['foo', pexpect.TIMEOUT], timeout=1, async_=True)
+ p = pexpect.spawn("cat")
+ coro = p.expect(["foo", pexpect.TIMEOUT], timeout=1, async_=True)
assert run(coro) == 1
def test_eof(self):
- p = pexpect.spawn('cat')
- p.sendline('Hi')
+ p = pexpect.spawn("cat")
+ p.sendline("Hi")
coro = p.expect(pexpect.EOF, async_=True)
p.sendeof()
assert run(coro) == 0
- p = pexpect.spawn('cat')
+ p = pexpect.spawn("cat")
p.sendeof()
- coro = p.expect('Blah', async_=True)
+ coro = p.expect("Blah", async_=True)
with self.assertRaises(pexpect.EOF):
run(coro)
def test_expect_exact(self):
- p = pexpect.spawn('%s list100.py' % self.PYTHONBIN)
- assert run(p.expect_exact(b'5', async_=True)) == 0
- assert run(p.expect_exact(['wpeok', b'11'], async_=True)) == 1
- assert run(p.expect_exact([b'foo', pexpect.EOF], async_=True)) == 1
+ p = pexpect.spawn("%s list100.py" % self.PYTHONBIN)
+ assert run(p.expect_exact(b"5", async_=True)) == 0
+ assert run(p.expect_exact(["wpeok", b"11"], async_=True)) == 1
+ assert run(p.expect_exact([b"foo", pexpect.EOF], async_=True)) == 1
def test_async_utf8(self):
- p = pexpect.spawn('%s list100.py' % self.PYTHONBIN, encoding='utf8')
- assert run(p.expect_exact(u'5', async_=True)) == 0
- assert run(p.expect_exact([u'wpeok', u'11'], async_=True)) == 1
- assert run(p.expect_exact([u'foo', pexpect.EOF], async_=True)) == 1
+ p = pexpect.spawn("%s list100.py" % self.PYTHONBIN, encoding="utf8")
+ assert run(p.expect_exact("5", async_=True)) == 0
+ assert run(p.expect_exact(["wpeok", "11"], async_=True)) == 1
+ assert run(p.expect_exact(["foo", pexpect.EOF], async_=True)) == 1
def test_async_and_gc(self):
- p = pexpect.spawn('%s sleep_for.py 1' % self.PYTHONBIN, encoding='utf8')
- assert run(p.expect_exact(u'READY', async_=True)) == 0
+ p = pexpect.spawn("%s sleep_for.py 1" % self.PYTHONBIN, encoding="utf8")
+ assert run(p.expect_exact("READY", async_=True)) == 0
gc.collect()
- assert run(p.expect_exact(u'END', async_=True)) == 0
+ assert run(p.expect_exact("END", async_=True)) == 0
def test_async_and_sync(self):
- p = pexpect.spawn('echo 1234', encoding='utf8', maxread=1)
- assert run(p.expect_exact(u'1', async_=True)) == 0
- assert p.expect_exact(u'2') == 0
- assert run(p.expect_exact(u'3', async_=True)) == 0
+ p = pexpect.spawn("echo 1234", encoding="utf8", maxread=1)
+ assert run(p.expect_exact("1", async_=True)) == 0
+ assert p.expect_exact("2") == 0
+ assert run(p.expect_exact("3", async_=True)) == 0
def test_async_replwrap(self):
bash = replwrap.bash()
coro = bash.run_command("time", async_=True)
res = run(coro)
- assert 'real' in res, res
+ assert "real" in res, res
def test_async_replwrap_multiline(self):
bash = replwrap.bash()
coro = bash.run_command("echo '1 2\n3 4'", async_=True)
res = run(coro)
- self.assertEqual(res.strip().splitlines(), ['1 2', '3 4'])
+ self.assertEqual(res.strip().splitlines(), ["1 2", "3 4"])
# Should raise ValueError if input is incomplete
coro = bash.run_command("echo '5 6", async_=True)
@@ -94,4 +101,4 @@ class AsyncTests(PexpectTestCase):
# Check that the REPL was reset (SIGINT) after the incomplete input
coro = bash.run_command("echo '1 2\n3 4'", async_=True)
res = run(coro)
- self.assertEqual(res.strip().splitlines(), ['1 2', '3 4'])
+ self.assertEqual(res.strip().splitlines(), ["1 2", "3 4"])