diff --git a/_pytest/assertion/util.py b/_pytest/assertion/util.py index 13a31a4a9..3564e4882 100644 --- a/_pytest/assertion/util.py +++ b/_pytest/assertion/util.py @@ -149,11 +149,10 @@ def assertrepr_compare(config, op, left, right): if istext(left) and istext(right): explanation = _notin_text(left, right, verbose) except Exception: - excinfo = py.code.ExceptionInfo() explanation = [ u('(pytest_assertion plugin: representation of details failed. ' 'Probably an object has a faulty __repr__.)'), - u(excinfo)] + u(py.code.ExceptionInfo())] if not explanation: return None diff --git a/_pytest/main.py b/_pytest/main.py index 4ba8253d7..246470f01 100644 --- a/_pytest/main.py +++ b/_pytest/main.py @@ -98,6 +98,7 @@ def wrap_session(config, doit): if session._testsfailed: session.exitstatus = EXIT_TESTSFAILED finally: + excinfo = None # Explicitly break reference cycle. session.startdir.chdir() if initstate >= 2: config.hook.pytest_sessionfinish( diff --git a/_pytest/python.py b/_pytest/python.py index 544055ec9..0c48f01c2 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -456,8 +456,8 @@ class Module(pytest.File, PyCollector): try: mod = self.fspath.pyimport(ensuresyspath=True) except SyntaxError: - excinfo = py.code.ExceptionInfo() - raise self.CollectError(excinfo.getrepr(style="short")) + raise self.CollectError( + py.code.ExceptionInfo().getrepr(style="short")) except self.fspath.ImportMismatchError: e = sys.exc_info()[1] raise self.CollectError(