Merge "Raise traceback on error when using CLI and -debug"

This commit is contained in:
Jenkins
2014-01-28 09:25:26 +00:00
committed by Gerrit Code Review
2 changed files with 30 additions and 3 deletions

View File

@@ -327,12 +327,18 @@ class HelpFormatter(argparse.HelpFormatter):
super(HelpFormatter, self).start_section(heading)
def main():
def main(args=None):
try:
CeilometerShell().main(sys.argv[1:])
if args is None:
args = sys.argv[1:]
CeilometerShell().main(args)
except Exception as e:
print(strutils.safe_encode(six.text_type(e)), file=sys.stderr)
if '--debug' in args or '-d' in args:
raise
else:
print(strutils.safe_encode(six.text_type(e)), file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":

View File

@@ -94,3 +94,24 @@ class ShellTest(utils.BaseTestCase):
def test_auth_param(self):
self.make_env(exclude='OS_USERNAME')
self.test_help()
@mock.patch.object(ksclient, 'Client')
def test_debug_switch_raises_error(self, mock_ksclient):
mock_ksclient.side_effect = exc.Unauthorized
self.make_env()
args = ['--debug', 'event-list']
self.assertRaises(exc.Unauthorized, ceilometer_shell.main, args)
@mock.patch.object(ksclient, 'Client')
def test_dash_d_switch_raises_error(self, mock_ksclient):
mock_ksclient.side_effect = exc.CommandError("FAIL")
self.make_env()
args = ['-d', 'event-list']
self.assertRaises(exc.CommandError, ceilometer_shell.main, args)
@mock.patch.object(ksclient, 'Client')
def test_no_debug_switch_no_raises_errors(self, mock_ksclient):
mock_ksclient.side_effect = exc.Unauthorized("FAIL")
self.make_env()
args = ['event-list']
self.assertRaises(SystemExit, ceilometer_shell.main, args)