diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2018-03-13 17:53:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-13 17:53:49 -0400 |
commit | 2ba567b9883aa5b4cedb58791a3cf27b41f6a484 (patch) | |
tree | 5deafdd151a8bd2e0673a17af09bf42d966349ed /tests/test_cmd2.py | |
parent | 2aa397cf872f713843945038e1bcdd282b20ebc2 (diff) | |
parent | 40d3e5bfeb286eaa507363b78637d6198372737b (diff) | |
download | cmd2-git-2ba567b9883aa5b4cedb58791a3cf27b41f6a484.tar.gz |
Merge branch 'master' into feature/copy-back-shared-attrs
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 |