diff --git a/glanceclient/shell.py b/glanceclient/shell.py index 06b2c46..8123cd8 100755 --- a/glanceclient/shell.py +++ b/glanceclient/shell.py @@ -759,7 +759,8 @@ class HelpFormatter(argparse.HelpFormatter): def main(): try: - OpenStackImagesShell().main(map(encodeutils.safe_decode, sys.argv[1:])) + argv = [encodeutils.safe_decode(a) for a in sys.argv[1:]] + OpenStackImagesShell().main(argv) except KeyboardInterrupt: utils.exit('... terminating glance client', exit_code=130) except Exception as e: diff --git a/glanceclient/tests/unit/test_shell.py b/glanceclient/tests/unit/test_shell.py index 3247d05..45c62f6 100644 --- a/glanceclient/tests/unit/test_shell.py +++ b/glanceclient/tests/unit/test_shell.py @@ -504,6 +504,20 @@ class ShellTest(testutils.TestCase): glance_shell = openstack_shell.OpenStackImagesShell() self.assertRaises(exc.CommandError, glance_shell.main, args.split()) + @mock.patch('sys.argv', ['glance']) + @mock.patch('sys.stdout', six.StringIO()) + @mock.patch('sys.stderr', six.StringIO()) + def test_main_noargs(self): + # Ensure that main works with no command-line arguments + try: + openstack_shell.main() + except SystemExit: + self.fail('Unexpected SystemExit') + + # We expect the normal usage as a result + self.assertIn('Command-line interface to the OpenStack Images API', + sys.stdout.getvalue()) + class ShellTestWithKeystoneV3Auth(ShellTest): # auth environment to use