Merge "Raise traceback on error when using CLI and -debug"
This commit is contained in:
@@ -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__":
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user