Revert "Remove failure version number"
This will likely cause a major version bump,
let's not do that right now, because well its not
really worth such a bump for just this change.
This reverts commit c560e71d91
.
Change-Id: I3aafa02da91bc39456c705e9f05ec2de625f7e6c
This commit is contained in:
@@ -152,6 +152,14 @@ class FailureObjectTestCase(test.TestCase):
|
||||
}
|
||||
self.assertRaises(exceptions.InvalidFormat,
|
||||
failure.Failure.validate, f)
|
||||
f = {
|
||||
'exception_str': 'blah',
|
||||
'traceback_str': 'blah',
|
||||
'exc_type_names': ['Exception'],
|
||||
'version': -1,
|
||||
}
|
||||
self.assertRaises(exceptions.InvalidFormat,
|
||||
failure.Failure.validate, f)
|
||||
|
||||
def test_valid_from_dict_to_dict(self):
|
||||
f = _captured_failure('Woot!')
|
||||
|
@@ -121,6 +121,7 @@ class Failure(mixins.StrMixin):
|
||||
backport at https://pypi.python.org/pypi/traceback2/ to (hopefully)
|
||||
simplify the methods and contents of this object...
|
||||
"""
|
||||
DICT_VERSION = 1
|
||||
|
||||
BASE_EXCEPTIONS = ('BaseException', 'Exception')
|
||||
"""
|
||||
@@ -136,6 +137,10 @@ class Failure(mixins.StrMixin):
|
||||
"cause": {
|
||||
"type": "object",
|
||||
'properties': {
|
||||
'version': {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
},
|
||||
'exception_str': {
|
||||
"type": "string",
|
||||
},
|
||||
@@ -462,6 +467,10 @@ class Failure(mixins.StrMixin):
|
||||
def from_dict(cls, data):
|
||||
"""Converts this from a dictionary to a object."""
|
||||
data = dict(data)
|
||||
version = data.pop('version', None)
|
||||
if version != cls.DICT_VERSION:
|
||||
raise ValueError('Invalid dict version of failure object: %r'
|
||||
% version)
|
||||
causes = data.get('causes')
|
||||
if causes is not None:
|
||||
data['causes'] = tuple(cls.from_dict(d) for d in causes)
|
||||
@@ -473,6 +482,7 @@ class Failure(mixins.StrMixin):
|
||||
'exception_str': self.exception_str,
|
||||
'traceback_str': self.traceback_str,
|
||||
'exc_type_names': list(self),
|
||||
'version': self.DICT_VERSION,
|
||||
'causes': [f.to_dict() for f in self.causes],
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user