From 92f18089889c1c75b5ce4b31574e730bdb273530 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Mon, 21 Oct 2013 15:13:58 -0700 Subject: Add simple test for pexpect.FSM --- pexpect/FSM.py | 6 ++++-- tests/test_FSM.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/test_FSM.py 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 -- cgit v1.2.1