From 6db8d9b8e91a49c75bf67a95f245733d357770a8 Mon Sep 17 00:00:00 2001 From: Cooper Ry Lees Date: Fri, 23 Mar 2018 19:42:30 +0000 Subject: Allow for configurable select.poll() usage - This allows systems that can have > 1024 fds to work - Should be marginally faster - Added tests to use select.poll() - Incremented version - Happy to change this, guessed what it should be --- tests/test_misc.py | 25 +++++++++++++++++++++++-- tests/test_socket.py | 19 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/test_misc.py b/tests/test_misc.py index fcd77d3..118de2e 100755 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -52,6 +52,15 @@ class TestCaseMisc(PexpectTestCase.PexpectTestCase): return 'skip' assert child.isatty() + def test_isatty_poll(self): + " Test isatty() is True after spawning process on most platforms. " + child = pexpect.spawn('cat', use_poll=True) + if not child.isatty() and sys.platform.lower().startswith('sunos'): + if hasattr(unittest, 'SkipTest'): + raise unittest.SkipTest("Not supported on this platform.") + return 'skip' + assert child.isatty() + def test_read(self): " Test spawn.read by calls of various size. " child = pexpect.spawn('cat') @@ -65,6 +74,19 @@ class TestCaseMisc(PexpectTestCase.PexpectTestCase): remaining = child.read().replace(_CAT_EOF, b'') self.assertEqual(remaining, b'abc\r\n') + def test_read_poll(self): + " Test spawn.read by calls of various size. " + child = pexpect.spawn('cat', use_poll=True) + child.sendline("abc") + child.sendeof() + self.assertEqual(child.read(0), b'') + self.assertEqual(child.read(1), b'a') + self.assertEqual(child.read(1), b'b') + self.assertEqual(child.read(1), b'c') + self.assertEqual(child.read(2), b'\r\n') + remaining = child.read().replace(_CAT_EOF, b'') + self.assertEqual(remaining, b'abc\r\n') + def test_readline_bin_echo(self): " Test spawn('echo'). " # given, @@ -148,7 +170,7 @@ class TestCaseMisc(PexpectTestCase.PexpectTestCase): p.sendline(b'alpha') p.expect(b'alpha') assert p.isalive() - + assert not p.isalive() def test_terminate(self): @@ -343,4 +365,3 @@ if __name__ == '__main__': unittest.main() suite = unittest.makeSuite(TestCaseMisc,'test') - diff --git a/tests/test_socket.py b/tests/test_socket.py index 56d69c7..21648f4 100644 --- a/tests/test_socket.py +++ b/tests/test_socket.py @@ -225,7 +225,7 @@ class ExpectTestCase(PexpectTestCase.PexpectTestCase): session.expect(pexpect.EOF) self.assertEqual(session.before, b'') - def test_fd_isalive (self): + def test_fd_isalive(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((self.host, self.port)) session = fdpexpect.fdspawn(sock.fileno(), timeout=10) @@ -233,13 +233,28 @@ class ExpectTestCase(PexpectTestCase.PexpectTestCase): sock.close() assert not session.isalive(), "Should not be alive after close()" - def test_fd_isatty (self): + def test_fd_isalive_poll(self): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((self.host, self.port)) + session = fdpexpect.fdspawn(sock.fileno(), timeout=10, use_poll=True) + assert session.isalive() + sock.close() + assert not session.isalive(), "Should not be alive after close()" + + def test_fd_isatty(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((self.host, self.port)) session = fdpexpect.fdspawn(sock.fileno(), timeout=10) assert not session.isatty() session.close() + def test_fd_isatty_poll(self): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((self.host, self.port)) + session = fdpexpect.fdspawn(sock.fileno(), timeout=10, use_poll=True) + assert not session.isatty() + session.close() + def test_fileobj(self): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((self.host, self.port)) -- cgit v1.2.1