diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-02-02 01:06:08 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-02-02 01:06:08 +0000 |
| commit | 5fe74a79e37d68f160c900295a804ba4c3850f04 (patch) | |
| tree | 3853f7bbef2e55becf106334ab6d08650a6d011c | |
| parent | 6b108dcfe0de93b76bdd542e99a2854adfd72422 (diff) | |
| parent | 5000a851d8f08c2bc6e1f8db1576a9d51abfebf7 (diff) | |
| download | python-keystoneclient-5fe74a79e37d68f160c900295a804ba4c3850f04.tar.gz | |
Merge "handles keyboard interrupt"
| -rw-r--r-- | keystoneclient/shell.py | 4 | ||||
| -rw-r--r-- | keystoneclient/tests/test_shell.py | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/keystoneclient/shell.py b/keystoneclient/shell.py index be7330c..16e3a2c 100644 --- a/keystoneclient/shell.py +++ b/keystoneclient/shell.py @@ -461,7 +461,9 @@ class OpenStackHelpFormatter(argparse.HelpFormatter): def main(): try: OpenStackIdentityShell().main(sys.argv[1:]) - + except KeyboardInterrupt: + print("... terminating keystone client", file=sys.stderr) + sys.exit(130) except Exception as e: print(encodeutils.safe_encode(six.text_type(e)), file=sys.stderr) sys.exit(1) diff --git a/keystoneclient/tests/test_shell.py b/keystoneclient/tests/test_shell.py index 65cba9d..842aa4e 100644 --- a/keystoneclient/tests/test_shell.py +++ b/keystoneclient/tests/test_shell.py @@ -520,3 +520,13 @@ class ShellTest(utils.TestCase): 'http://example.com:4321/go', 'http://example.com:9876/adm') self.assertTrue(all([x == y for x, y in zip(actual, expect)])) + + def test_shell_keyboard_interrupt(self): + shell_mock = mock.MagicMock() + with mock.patch('keystoneclient.shell.OpenStackIdentityShell.main', + shell_mock): + try: + shell_mock.side_effect = KeyboardInterrupt() + openstack_shell.main() + except SystemExit as ex: + self.assertEqual(130, ex.code) |
