diff options
author | Michael Seifert <michaelseifert04@yahoo.de> | 2016-10-18 00:56:44 +0200 |
---|---|---|
committer | Bruno Oliveira <nicoddemus@gmail.com> | 2016-11-08 22:12:23 -0200 |
commit | 1e5b21cd6180009939130f6169c936427d0d4572 (patch) | |
tree | 27c55284f94345dc0aca068f960d63d72333e7f3 /_pytest/_code/code.py | |
parent | 0b94c43baccf02268eb432eef475480a2a5749ae (diff) | |
download | pytest-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.py | 5 |
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)) |