Return 130 for keyboard interrupt

When keyboard interrupt is received by glanceclient, the return code as
of now is 1.

But since the client was terminated by an keyboard interrupt, the return
code should be 130. (http://tldp.org/LDP/abs/html/exitcodes.html)
It is useful when people are writing automation test cases and want to
validate based on the return code.

Change-Id: Ia70116ab6f0708a0ce6eeaed07c1e7a56e68c9f4
Closes-Bug: #1373231
This commit is contained in:
Rakesh H S 2014-09-25 11:19:31 +05:30
parent 869e6ace0e
commit 96ff6e46c4
3 changed files with 12 additions and 3 deletions
glanceclient
tests

@ -234,10 +234,10 @@ def import_versioned_module(version, submodule=None):
return importutils.import_module(module)
def exit(msg=''):
def exit(msg='', exit_code=1):
if msg:
print(encodeutils.safe_decode(msg), file=sys.stderr)
sys.exit(1)
sys.exit(exit_code)
def save_image(data, path):

@ -697,6 +697,6 @@ def main():
try:
OpenStackImagesShell().main(map(encodeutils.safe_decode, sys.argv[1:]))
except KeyboardInterrupt:
utils.exit('... terminating glance client')
utils.exit('... terminating glance client', exit_code=130)
except Exception as e:
utils.exit(utils.exception_to_str(e))

@ -289,6 +289,15 @@ class ShellTest(utils.TestCase):
self.assertEqual('mydomain', kwargs['project_domain_name'])
self.assertEqual('myid', kwargs['project_domain_id'])
@mock.patch.object(openstack_shell.OpenStackImagesShell, 'main')
def test_shell_keyboard_interrupt(self, mock_glance_shell):
# Ensure that exit code is 130 for KeyboardInterrupt
try:
mock_glance_shell.side_effect = KeyboardInterrupt()
openstack_shell.main()
except SystemExit as ex:
self.assertEqual(130, ex.code)
class ShellTestWithKeystoneV3Auth(ShellTest):
# auth environment to use