summaryrefslogtreecommitdiff
path: root/tests/test_run.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_run.py')
-rwxr-xr-xtests/test_run.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/test_run.py b/tests/test_run.py
new file mode 100755
index 0000000..261bcb0
--- /dev/null
+++ b/tests/test_run.py
@@ -0,0 +1,61 @@
+#!/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 commands
+import sys
+import PexpectTestCase
+
+# TODO Many of these test cases blindly assume that sequential
+# TODO listing of the /bin directory will yield the same results.
+# TODO This may not always be true, but seems adequate for testing for now.
+# TODO I should fix this at some point.
+
+def timeout_callback (d):
+# print d["event_count"],
+ if d["event_count"]>5:
+ return 1
+ return 0
+
+class ExpectTestCase(PexpectTestCase.PexpectTestCase):
+ def test_run_exit (self):
+ (data, exitstatus) = pexpect.run ('python exit1.py', withexitstatus=1)
+ assert exitstatus == 1, "Exit status of 'python exit1.py' should be 1."
+
+ def test_run (self):
+ the_old_way = commands.getoutput('ls -l /bin')
+ (the_new_way, exitstatus) = pexpect.run ('ls -l /bin', withexitstatus=1)
+ the_new_way = the_new_way.replace('\r','')[:-1]
+ assert the_old_way == the_new_way
+ assert exitstatus == 0
+
+ def test_run_callback (self): # TODO it seems like this test could block forever if run fails...
+ pexpect.run("cat", timeout=1, events={pexpect.TIMEOUT:timeout_callback})
+
+ def test_run_bad_exitstatus (self):
+ (the_new_way, exitstatus) = pexpect.run ('ls -l /najoeufhdnzkxjd', withexitstatus=1)
+ assert exitstatus != 0
+
+if __name__ == '__main__':
+ unittest.main()
+
+suite = unittest.makeSuite(ExpectTestCase,'test')
+