summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2013-01-30 11:15:10 -0500
committerDan Prince <dprince@redhat.com>2013-01-30 11:30:41 -0500
commitdc99baa33648820b93c90c15bd3562284e8ce4a9 (patch)
tree0df37d38124b606d47ddbf9487eae86c756cad36
parentc29263c4a81d2e71a3d6e36eb32e5df9d2c8fb05 (diff)
downloadoslo-dc99baa33648820b93c90c15bd3562284e8ce4a9.tar.gz
oslo-dc99baa33648820b93c90c15bd3562284e8ce4a9.tar.xz
oslo-dc99baa33648820b93c90c15bd3562284e8ce4a9.zip
Add _FATAL_EXCEPTION_FORMAT_ERRORS global.
Add a new global variable to control when exception format errors are fatal. Also, updates the Oslo test base class to enable fatal exception format errors. The motivation for this change is to give projects that use openstack common a hook to enable exception format checking when testing. Change-Id: Id8f4a0946b1614c8e987976b79069532a2e8608f
-rw-r--r--openstack/common/exception.py11
-rw-r--r--tests/unit/test_exception.py3
-rw-r--r--tests/utils.py8
3 files changed, 18 insertions, 4 deletions
diff --git a/openstack/common/exception.py b/openstack/common/exception.py
index fa06d6a..4a7c72b 100644
--- a/openstack/common/exception.py
+++ b/openstack/common/exception.py
@@ -23,6 +23,8 @@ import logging
from openstack.common.gettextutils import _
+_FATAL_EXCEPTION_FORMAT_ERRORS = False
+
class Error(Exception):
def __init__(self, message=None):
@@ -121,9 +123,12 @@ class OpenstackException(Exception):
try:
self._error_string = self.message % kwargs
- except Exception:
- # at least get the core message out if something happened
- self._error_string = self.message
+ except Exception as e:
+ if _FATAL_EXCEPTION_FORMAT_ERRORS:
+ raise e
+ else:
+ # at least get the core message out if something happened
+ self._error_string = self.message
def __str__(self):
return self._error_string
diff --git a/tests/unit/test_exception.py b/tests/unit/test_exception.py
index c03a41d..6fe93ac 100644
--- a/tests/unit/test_exception.py
+++ b/tests/unit/test_exception.py
@@ -88,7 +88,8 @@ class OpenstackExceptionTest(utils.BaseTestCase):
err = self.TestException(test=test_message)
self.assertEqual(err._error_string, test_message)
- def test_error_forating_error_string(self):
+ def test_error_formating_error_string(self):
+ self.stubs.Set(exception, '_FATAL_EXCEPTION_FORMAT_ERRORS', False)
err = self.TestException(lol='U mad brah')
self.assertEqual(err._error_string, self.TestException.message)
diff --git a/tests/utils.py b/tests/utils.py
index f9854ca..2d681ae 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -24,6 +24,7 @@ import testtools
from openstack.common import cfg
from openstack.common.fixture import moxstubout
+from openstack.common import exception
CONF = cfg.CONF
@@ -36,6 +37,13 @@ class BaseTestCase(testtools.TestCase):
self.addCleanup(CONF.reset)
self.useFixture(fixtures.FakeLogger('openstack.common'))
self.useFixture(fixtures.Timeout(30, True))
+ self.stubs.Set(exception, '_FATAL_EXCEPTION_FORMAT_ERRORS', True)
+
+ def tearDown(self):
+ super(BaseTestCase, self).tearDown()
+ CONF.reset()
+ self.stubs.UnsetAll()
+ self.stubs.SmartUnsetAll()
def config(self, **kw):
"""