diff options
Diffstat (limited to 'tests/test_cmd2.py')
-rw-r--r-- | tests/test_cmd2.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py index 92f21757..e22212d4 100644 --- a/tests/test_cmd2.py +++ b/tests/test_cmd2.py @@ -900,6 +900,47 @@ def test_precmd_hook_failure(hook_failure): assert out == True +class SayApp(cmd2.Cmd): + def __init__(self, *args, **kwargs): + # Need to use this older form of invoking super class constructor to support Python 2.x and Python 3.x + cmd2.Cmd.__init__(self, *args, **kwargs) + + def do_say(self, arg): + self.poutput(arg) + +@pytest.fixture +def say_app(): + app = SayApp() + app.stdout = StdOut() + return app + +def test_interrupt_quit(say_app): + # Mock out the input call so we don't actually wait for a user's response on stdin + m = mock.MagicMock(name='input') + m.side_effect = ['say hello', KeyboardInterrupt(), 'say goodbye', 'eof'] + sm.input = m + + say_app.cmdloop() + + # And verify the expected output to stdout + out = say_app.stdout.buffer + assert out == 'hello\n' + +def test_interrupt_noquit(say_app): + say_app.quit_on_sigint = False + + # Mock out the input call so we don't actually wait for a user's response on stdin + m = mock.MagicMock(name='input') + m.side_effect = ['say hello', KeyboardInterrupt(), 'say goodbye', 'eof'] + sm.input = m + + say_app.cmdloop() + + # And verify the expected output to stdout + out = say_app.stdout.buffer + assert out == 'hello\n^C\ngoodbye\n' + + class ShellApp(cmd2.Cmd): def __init__(self, *args, **kwargs): # Need to use this older form of invoking super class constructor to support Python 2.x and Python 3.x |