summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-02-02 01:06:08 +0000
committerGerrit Code Review <review@openstack.org>2015-02-02 01:06:08 +0000
commit5fe74a79e37d68f160c900295a804ba4c3850f04 (patch)
tree3853f7bbef2e55becf106334ab6d08650a6d011c
parent6b108dcfe0de93b76bdd542e99a2854adfd72422 (diff)
parent5000a851d8f08c2bc6e1f8db1576a9d51abfebf7 (diff)
downloadpython-keystoneclient-5fe74a79e37d68f160c900295a804ba4c3850f04.tar.gz
Merge "handles keyboard interrupt"
-rw-r--r--keystoneclient/shell.py4
-rw-r--r--keystoneclient/tests/test_shell.py10
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)