summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xswiftclient/shell.py15
-rw-r--r--tests/unit/test_shell.py15
2 files changed, 22 insertions, 8 deletions
diff --git a/swiftclient/shell.py b/swiftclient/shell.py
index 8fc5c0c..010739c 100755
--- a/swiftclient/shell.py
+++ b/swiftclient/shell.py
@@ -1067,6 +1067,13 @@ def parse_args(parser, args, enforce_requires=True):
if not args:
args = ['-h']
(options, args) = parser.parse_args(args)
+ if enforce_requires and (options.debug or options.info):
+ logging.getLogger("swiftclient")
+ if options.debug:
+ logging.basicConfig(level=logging.DEBUG)
+ logging.getLogger('iso8601').setLevel(logging.WARNING)
+ elif options.info:
+ logging.basicConfig(level=logging.INFO)
if len(args) > 1 and args[1] == '--help':
_help = globals().get('st_%s_help' % args[0],
@@ -1415,14 +1422,6 @@ Examples:
signal.signal(signal.SIGINT, immediate_exit)
- if options.debug or options.info:
- logging.getLogger("swiftclient")
- if options.debug:
- logging.basicConfig(level=logging.DEBUG)
- logging.getLogger('iso8601').setLevel(logging.WARNING)
- elif options.info:
- logging.basicConfig(level=logging.INFO)
-
with OutputManager() as output:
parser.usage = globals()['st_%s_help' % args[0]]
diff --git a/tests/unit/test_shell.py b/tests/unit/test_shell.py
index cac4da2..4dec22c 100644
--- a/tests/unit/test_shell.py
+++ b/tests/unit/test_shell.py
@@ -16,6 +16,7 @@ from __future__ import unicode_literals
from genericpath import getmtime
import hashlib
+import logging
import mock
import os
import tempfile
@@ -1040,6 +1041,20 @@ class TestSubcommandHelp(testtools.TestCase):
self.assertEqual(out.strip('\n'), expected)
+@mock.patch.dict(os.environ, mocked_os_environ)
+class TestOptionAfterPosArg(testtools.TestCase):
+ @mock.patch('logging.basicConfig')
+ @mock.patch('swiftclient.service.Connection')
+ def test_option_after_posarg(self, connection, mock_logging):
+ argv = ["", "stat", "--info"]
+ swiftclient.shell.main(argv)
+ mock_logging.assert_called_with(level=logging.INFO)
+
+ argv = ["", "stat", "--debug"]
+ swiftclient.shell.main(argv)
+ mock_logging.assert_called_with(level=logging.DEBUG)
+
+
class TestBase(testtools.TestCase):
"""
Provide some common methods to subclasses