Index: third_party/pexpect/tests/test_log.py |
diff --git a/third_party/pexpect/tests/test_log.py b/third_party/pexpect/tests/test_log.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4ad225697d8ff64e4a1b5660dc4d8082ff1bb9ec |
--- /dev/null |
+++ b/third_party/pexpect/tests/test_log.py |
@@ -0,0 +1,108 @@ |
+#!/usr/bin/env python |
+''' |
+PEXPECT LICENSE |
+ |
+ This license is approved by the OSI and FSF as GPL-compatible. |
+ http://opensource.org/licenses/isc-license.txt |
+ |
+ Copyright (c) 2012, Noah Spurrier <noah@noah.org> |
+ PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY |
+ PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE |
+ COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. |
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
+ |
+''' |
+import pexpect |
+import unittest |
+import os |
+import tempfile |
+from . import PexpectTestCase |
+ |
+# the program cat(1) may display ^D\x08\x08 when \x04 (EOF, Ctrl-D) is sent |
+_CAT_EOF = b'^D\x08\x08' |
+ |
+class TestCaseLog(PexpectTestCase.PexpectTestCase): |
+ |
+ def test_log (self): |
+ log_message = 'This is a test.' |
+ filename = tempfile.mktemp() |
+ mylog = open(filename, 'wb') |
+ p = pexpect.spawn('echo', [log_message]) |
+ p.logfile = mylog |
+ p.expect(pexpect.EOF) |
+ p.logfile = None |
+ mylog.close() |
+ with open(filename, 'rb') as f: |
+ lf = f.read() |
+ os.unlink(filename) |
+ self.assertEqual(lf.rstrip(), log_message.encode('ascii')) |
+ |
+ def test_log_logfile_read (self): |
+ log_message = 'This is a test.' |
+ filename = tempfile.mktemp() |
+ mylog = open(filename, 'wb') |
+ p = pexpect.spawn('cat') |
+ p.logfile_read = mylog |
+ p.sendline(log_message) |
+ p.sendeof() |
+ p.expect(pexpect.EOF) |
+ p.logfile = None |
+ mylog.close() |
+ with open(filename, 'rb') as f: |
+ lf = f.read() |
+ os.unlink (filename) |
+ lf = lf.replace(_CAT_EOF, b'') |
+ self.assertEqual(lf, b'This is a test.\r\nThis is a test.\r\n') |
+ |
+ def test_log_logfile_send (self): |
+ log_message = b'This is a test.' |
+ filename = tempfile.mktemp() |
+ mylog = open (filename, 'wb') |
+ p = pexpect.spawn('cat') |
+ p.logfile_send = mylog |
+ p.sendline(log_message) |
+ p.sendeof() |
+ p.expect (pexpect.EOF) |
+ p.logfile = None |
+ mylog.close() |
+ with open(filename, 'rb') as f: |
+ lf = f.read() |
+ os.unlink(filename) |
+ lf = lf.replace(b'\x04', b'') |
+ self.assertEqual(lf.rstrip(), log_message) |
+ |
+ def test_log_send_and_received (self): |
+ |
+ '''The logfile should have the test message three time -- once for the |
+ data we sent. Once for the data that cat echos back as characters are |
+ typed. And once for the data that cat prints after we send a linefeed |
+ (sent by sendline). ''' |
+ |
+ log_message = 'This is a test.' |
+ filename = tempfile.mktemp() |
+ mylog = open(filename, 'wb') |
+ p = pexpect.spawn('cat') |
+ p.logfile = mylog |
+ p.sendline(log_message) |
+ p.sendeof() |
+ p.expect (pexpect.EOF) |
+ p.logfile = None |
+ mylog.close() |
+ with open(filename, 'rb') as f: |
+ lf = f.read() |
+ os.unlink(filename) |
+ lf = lf.replace(b'\x04', b'').replace(_CAT_EOF, b'') |
+ self.assertEqual(lf, |
+ b'This is a test.\nThis is a test.\r\nThis is a test.\r\n') |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
+ |
+suite = unittest.makeSuite(TestCaseLog,'test') |
+ |