summaryrefslogtreecommitdiff
path: root/_pytest/_code/code.py
diff options
context:
space:
mode:
authorMichael Seifert <michaelseifert04@yahoo.de>2016-10-18 00:56:44 +0200
committerBruno Oliveira <nicoddemus@gmail.com>2016-11-08 22:12:23 -0200
commit1e5b21cd6180009939130f6169c936427d0d4572 (patch)
tree27c55284f94345dc0aca068f960d63d72333e7f3 /_pytest/_code/code.py
parent0b94c43baccf02268eb432eef475480a2a5749ae (diff)
downloadpytest-1e5b21cd6180009939130f6169c936427d0d4572.tar.gz
Fix memory leak with pytest.raises by using weakref
Diffstat (limited to '_pytest/_code/code.py')
-rw-r--r--_pytest/_code/code.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/_pytest/_code/code.py b/_pytest/_code/code.py
index 416ee0b1b..5b4237939 100644
--- a/_pytest/_code/code.py
+++ b/_pytest/_code/code.py
@@ -1,6 +1,7 @@
import sys
from inspect import CO_VARARGS, CO_VARKEYWORDS
import re
+from weakref import ref
import py
builtin_repr = repr
@@ -230,7 +231,7 @@ class TracebackEntry(object):
return False
if py.builtin.callable(tbh):
- return tbh(self._excinfo)
+ return tbh(None if self._excinfo is None else self._excinfo())
else:
return tbh
@@ -370,7 +371,7 @@ class ExceptionInfo(object):
#: the exception type name
self.typename = self.type.__name__
#: the exception traceback (_pytest._code.Traceback instance)
- self.traceback = _pytest._code.Traceback(self.tb, excinfo=self)
+ self.traceback = _pytest._code.Traceback(self.tb, excinfo=ref(self))
def __repr__(self):
return "<ExceptionInfo %s tblen=%d>" % (self.typename, len(self.traceback))