summaryrefslogtreecommitdiff
path: root/factory
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polytechnique.org>2016-04-07 00:11:16 +0200
committerRaphaël Barrois <raphael.barrois@polytechnique.org>2016-04-07 00:11:16 +0200
commita17b036d0b12a35a24864ec6fb9dee8d3d54ff03 (patch)
tree27ca2935a365dcf3096f579043769a4d7881b880 /factory
parent872718c1eb7865878ff17c8ce7dbeb004a089e40 (diff)
parentf023e5a477668b8374a75c78e87d946b21a27f15 (diff)
downloadfactory-boy-a17b036d0b12a35a24864ec6fb9dee8d3d54ff03.tar
factory-boy-a17b036d0b12a35a24864ec6fb9dee8d3d54ff03.tar.gz
Merge pull request #256 from koterpillar/cyclic-definition-rescue
Don't leave AttributeBuilder in an inconsistent state on exceptions
Diffstat (limited to 'factory')
-rw-r--r--factory/containers.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/factory/containers.py b/factory/containers.py
index d3f39c4..4961115 100644
--- a/factory/containers.py
+++ b/factory/containers.py
@@ -99,8 +99,10 @@ class LazyStub(object):
val = self.__attrs[name]
if isinstance(val, LazyValue):
self.__pending.append(name)
- val = val.evaluate(self, self.__containers)
- last = self.__pending.pop()
+ try:
+ val = val.evaluate(self, self.__containers)
+ finally:
+ last = self.__pending.pop()
assert name == last
self.__values[name] = val
return val