in idb/utils/testing.py [0:0]
def run(self, result=None):
"""
This is a complete copy of TestCase.run
But with some asyncio worked into it.
"""
orig_result = result
if result is None:
result = self.defaultTestResult()
startTestRun = getattr(result, "startTestRun", None)
if startTestRun is not None:
startTestRun()
result.startTest(self)
testMethod = getattr(self, self._testMethodName)
if getattr(self.__class__, "__unittest_skip__", False) or getattr(
testMethod, "__unittest_skip__", False
):
# If the class or method was skipped.
try:
skip_why = getattr(
self.__class__, "__unittest_skip_why__", ""
) or getattr(testMethod, "__unittest_skip_why__", "")
self._addSkip(result, self, skip_why) # noqa T484
finally:
result.stopTest(self)
return None
expecting_failure_method = getattr(
testMethod, "__unittest_expecting_failure__", False
)
expecting_failure_class = getattr(self, "__unittest_expecting_failure__", False)
expecting_failure = expecting_failure_class or expecting_failure_method
outcome = _Outcome(result)
try:
self._outcome = outcome
self.asyncio_orchestration_outcome(testMethod, outcome, expecting_failure)
for test, reason in outcome.skipped:
self._addSkip(result, test, reason) # noqa T484
self._feedErrorsToResult(result, outcome.errors) # noqa T484
if outcome.success:
if expecting_failure:
if outcome.expectedFailure:
self._addExpectedFailure( # noqa T484
result, outcome.expectedFailure
)
else:
self._addUnexpectedSuccess(result) # noqa T484
else:
result.addSuccess(self)
return result
finally:
result.stopTest(self)
if orig_result is None:
stopTestRun = getattr(result, "stopTestRun", None)
if stopTestRun is not None:
stopTestRun()
# explicitly break reference cycles:
# outcome.errors -> frame -> outcome -> outcome.errors
# outcome.expectedFailure -> frame -> outcome -> outcome.expectedFailure
outcome.errors.clear()
outcome.expectedFailure = None
# clear the outcome, no more needed
self._outcome = None