Fix memory leak with pytest.raises by using weakref
This commit is contained in:
parent
0b94c43bac
commit
1e5b21cd61
1
AUTHORS
1
AUTHORS
|
@ -99,6 +99,7 @@ mbyt
|
||||||
Michael Aquilina
|
Michael Aquilina
|
||||||
Michael Birtwell
|
Michael Birtwell
|
||||||
Michael Droettboom
|
Michael Droettboom
|
||||||
|
Michael Seifert
|
||||||
Mike Lundy
|
Mike Lundy
|
||||||
Nicolas Delaby
|
Nicolas Delaby
|
||||||
Oleg Pidsadnyi
|
Oleg Pidsadnyi
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
* When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (`#1998`_).
|
* When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (`#1998`_).
|
||||||
Thanks `@nicoddemus`_ for the PR.
|
Thanks `@nicoddemus`_ for the PR.
|
||||||
|
|
||||||
|
* Fixed memory leak in the RaisesContext (pytest.raises) (`#1965`_).
|
||||||
|
Thanks `@MSeifert04`_ for the report the PR.
|
||||||
|
|
||||||
* Fixed false-positives warnings from assertion rewrite hook for modules that were rewritten but
|
* Fixed false-positives warnings from assertion rewrite hook for modules that were rewritten but
|
||||||
were later marked explicitly by ``pytest.register_assert_rewrite``
|
were later marked explicitly by ``pytest.register_assert_rewrite``
|
||||||
or implicitly as a plugin (`#2005`_).
|
or implicitly as a plugin (`#2005`_).
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import sys
|
import sys
|
||||||
from inspect import CO_VARARGS, CO_VARKEYWORDS
|
from inspect import CO_VARARGS, CO_VARKEYWORDS
|
||||||
import re
|
import re
|
||||||
|
from weakref import ref
|
||||||
|
|
||||||
import py
|
import py
|
||||||
builtin_repr = repr
|
builtin_repr = repr
|
||||||
|
@ -230,7 +231,7 @@ class TracebackEntry(object):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if py.builtin.callable(tbh):
|
if py.builtin.callable(tbh):
|
||||||
return tbh(self._excinfo)
|
return tbh(None if self._excinfo is None else self._excinfo())
|
||||||
else:
|
else:
|
||||||
return tbh
|
return tbh
|
||||||
|
|
||||||
|
@ -370,7 +371,7 @@ class ExceptionInfo(object):
|
||||||
#: the exception type name
|
#: the exception type name
|
||||||
self.typename = self.type.__name__
|
self.typename = self.type.__name__
|
||||||
#: the exception traceback (_pytest._code.Traceback instance)
|
#: 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):
|
def __repr__(self):
|
||||||
return "<ExceptionInfo %s tblen=%d>" % (self.typename, len(self.traceback))
|
return "<ExceptionInfo %s tblen=%d>" % (self.typename, len(self.traceback))
|
||||||
|
|
Loading…
Reference in New Issue