Avoid exc_info cycles in several places and comment on trickier ones
This commit is contained in:
@@ -187,9 +187,7 @@ class TestProgram(object):
|
||||
self.testNames = (self.defaultTest,)
|
||||
self.createTests()
|
||||
except getopt.error:
|
||||
exc_info = sys.exc_info()
|
||||
msg = exc_info[1]
|
||||
self.usageExit(msg)
|
||||
self.usageExit(sys.exc_info()[1])
|
||||
|
||||
def createTests(self):
|
||||
if self.testNames is None:
|
||||
|
||||
@@ -146,8 +146,11 @@ class RunTest(object):
|
||||
raise
|
||||
except:
|
||||
exc_info = sys.exc_info()
|
||||
e = exc_info[1]
|
||||
self.case.onException(exc_info)
|
||||
try:
|
||||
e = exc_info[1]
|
||||
self.case.onException(exc_info)
|
||||
finally:
|
||||
del exc_info
|
||||
for exc_class, handler in self.handlers:
|
||||
if isinstance(e, exc_class):
|
||||
self._exceptions.append(e)
|
||||
|
||||
@@ -179,8 +179,11 @@ class TestCase(unittest.TestCase):
|
||||
raise
|
||||
except:
|
||||
exc_info = sys.exc_info()
|
||||
self._report_traceback(exc_info)
|
||||
last_exception = exc_info[1]
|
||||
try:
|
||||
self._report_traceback(exc_info)
|
||||
last_exception = exc_info[1]
|
||||
finally:
|
||||
del exc_info
|
||||
return last_exception
|
||||
|
||||
def addCleanup(self, function, *arguments, **keywordArguments):
|
||||
@@ -319,9 +322,14 @@ class TestCase(unittest.TestCase):
|
||||
try:
|
||||
predicate(*args, **kwargs)
|
||||
except self.failureException:
|
||||
# GZ 2010-08-12: Don't know how to avoid exc_info cycle as the new
|
||||
# unittest _ExpectedFailure wants old traceback
|
||||
exc_info = sys.exc_info()
|
||||
self._report_traceback(exc_info)
|
||||
raise _ExpectedFailure(exc_info)
|
||||
try:
|
||||
self._report_traceback(exc_info)
|
||||
raise _ExpectedFailure(exc_info)
|
||||
finally:
|
||||
del exc_info
|
||||
else:
|
||||
raise _UnexpectedSuccess(reason)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ __all__ = [
|
||||
from testtools import TestResult
|
||||
|
||||
|
||||
# GZ 2010-08-12: Don't do this, pointlessly creates an exc_info cycle
|
||||
try:
|
||||
raise Exception
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user