summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Kluyver <takowl@gmail.com>2013-10-21 15:13:58 -0700
committerThomas Kluyver <takowl@gmail.com>2013-10-21 15:13:58 -0700
commit92f18089889c1c75b5ce4b31574e730bdb273530 (patch)
tree5cb7237095e1d039428e0f789b2a977c493a78e9
parent8ed644d85fcfa18cc034e884f547696116e54771 (diff)
downloadpexpect-92f18089889c1c75b5ce4b31574e730bdb273530.tar.gz
Add simple test for pexpect.FSM
-rw-r--r--pexpect/FSM.py6
-rw-r--r--tests/test_FSM.py34
2 files changed, 38 insertions, 2 deletions
diff --git a/pexpect/FSM.py b/pexpect/FSM.py
index 624981d..f039f70 100644
--- a/pexpect/FSM.py
+++ b/pexpect/FSM.py
@@ -269,6 +269,8 @@ import os
import traceback
import string
+PY3 = (sys.version_info[0] >= 3)
+
#
# These define the actions.
# Note that "memory" is a list being used as a stack.
@@ -326,7 +328,7 @@ def main():
print('Use the = sign to evaluate and print the expression.')
print('For example: ')
print(' 167 3 2 2 * * * 1 - =')
- inputstr = raw_input ('> ')
+ inputstr = (input if PY3 else raw_input)('> ') # analysis:ignore
f.process_list(inputstr)
@@ -338,7 +340,7 @@ if __name__ == '__main__':
raise
except SystemExit: # sys.exit()
raise
- except Exception(err):
+ except Exception as err:
print('ERROR, UNEXPECTED EXCEPTION')
print(str(err))
traceback.print_exc()
diff --git a/tests/test_FSM.py b/tests/test_FSM.py
new file mode 100644
index 0000000..3425fd2
--- /dev/null
+++ b/tests/test_FSM.py
@@ -0,0 +1,34 @@
+import io
+import sys
+import unittest
+try:
+ import builtins
+except ImportError:
+ import __builtin__ as builtins
+
+PY3 = (sys.version_info[0] >= 3)
+input_name = 'input' if PY3 else 'raw_input'
+
+from pexpect import FSM
+
+class FSMTestCase(unittest.TestCase):
+ def test_run_fsm(self):
+ def _input(prompt):
+ return "167 3 2 2 * * * 1 - ="
+ orig_input = getattr(builtins, input_name)
+ orig_stdout = sys.stdout
+ setattr(builtins, input_name, _input)
+ sys.stdout = sio = (io.StringIO if PY3 else io.BytesIO)()
+
+ try:
+ FSM.main()
+ finally:
+ setattr(builtins, input_name, orig_input)
+ sys.stdout = orig_stdout
+
+ printed = sio.getvalue()
+ assert '2003' in printed, printed
+
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file