From 062dcc9cb29556b82ca7182458fac3038dd64c62 Mon Sep 17 00:00:00 2001 From: Tin Lam Date: Sat, 27 Feb 2016 21:36:00 -0600 Subject: [PATCH] Fix ClientException message property not set properly To reproduce: >>> from keystoneauth1 import exceptions >>> e = exceptions.ClientException(message="test") >>> print(e.message) None Change-Id: If73df85768866fb93d90ff95479f29f64aabe73f Co-Authored-By: Gage Hugo Closes-Bug: #1534363 --- keystoneauth1/exceptions/base.py | 10 ++---- .../tests/unit/exceptions/__init__.py | 0 .../tests/unit/exceptions/test_exceptions.py | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 keystoneauth1/tests/unit/exceptions/__init__.py create mode 100644 keystoneauth1/tests/unit/exceptions/test_exceptions.py diff --git a/keystoneauth1/exceptions/base.py b/keystoneauth1/exceptions/base.py index a7393b09..afb889bb 100644 --- a/keystoneauth1/exceptions/base.py +++ b/keystoneauth1/exceptions/base.py @@ -17,12 +17,8 @@ __all__ = ('ClientException',) class ClientException(Exception): """The base exception for everything to do with clients.""" - message = None + message = "ClientException" def __init__(self, message=None): - if not message: - if self.message: - message = self.message - else: - message = self.__class__.__name__ - super(Exception, self).__init__(message) + self.message = message or self.message + super(ClientException, self).__init__(self.message) diff --git a/keystoneauth1/tests/unit/exceptions/__init__.py b/keystoneauth1/tests/unit/exceptions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/keystoneauth1/tests/unit/exceptions/test_exceptions.py b/keystoneauth1/tests/unit/exceptions/test_exceptions.py new file mode 100644 index 00000000..341ef573 --- /dev/null +++ b/keystoneauth1/tests/unit/exceptions/test_exceptions.py @@ -0,0 +1,32 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from keystoneauth1 import exceptions +from keystoneauth1.tests.unit import utils + + +class ExceptionTests(utils.TestCase): + + def test_clientexception_with_message(self): + test_message = 'Unittest exception message.' + exc = exceptions.ClientException(message=test_message) + self.assertEqual(test_message, exc.message) + + def test_clientexception_with_no_message(self): + exc = exceptions.ClientException() + self.assertEqual(exceptions.ClientException.__name__, + exc.message) + + def test_using_default_message(self): + exc = exceptions.AuthorizationFailure() + self.assertEqual(exceptions.AuthorizationFailure.message, + exc.message)