Merge branch 'main' into sqlite-optimise-resets · python/cpython@fe0fd6f (original) (raw)

`@@ -557,73 +557,71 @@ def _callCleanup(self, function, /, *args, **kwargs):

`

557

557

`function(*args, **kwargs)

`

558

558

``

559

559

`def run(self, result=None):

`

560

``

`-

orig_result = result

`

561

560

`if result is None:

`

562

561

`result = self.defaultTestResult()

`

563

562

`startTestRun = getattr(result, 'startTestRun', None)

`

``

563

`+

stopTestRun = getattr(result, 'stopTestRun', None)

`

564

564

`if startTestRun is not None:

`

565

565

`startTestRun()

`

``

566

`+

else:

`

``

567

`+

stopTestRun = None

`

566

568

``

567

569

`result.startTest(self)

`

568

``

-

569

``

`-

testMethod = getattr(self, self._testMethodName)

`

570

``

`-

if (getattr(self.class, "unittest_skip", False) or

`

571

``

`-

getattr(testMethod, "unittest_skip", False)):

`

572

``

`-

If the class or method was skipped.

`

573

``

`-

try:

`

``

570

`+

try:

`

``

571

`+

testMethod = getattr(self, self._testMethodName)

`

``

572

`+

if (getattr(self.class, "unittest_skip", False) or

`

``

573

`+

getattr(testMethod, "unittest_skip", False)):

`

``

574

`+

If the class or method was skipped.

`

574

575

`skip_why = (getattr(self.class, 'unittest_skip_why', '')

`

575

576

`or getattr(testMethod, 'unittest_skip_why', ''))

`

576

577

`self._addSkip(result, self, skip_why)

`

577

``

`-

finally:

`

578

``

`-

result.stopTest(self)

`

579

``

`-

return

`

580

``

`-

expecting_failure_method = getattr(testMethod,

`

581

``

`-

"unittest_expecting_failure", False)

`

582

``

`-

expecting_failure_class = getattr(self,

`

583

``

`-

"unittest_expecting_failure", False)

`

584

``

`-

expecting_failure = expecting_failure_class or expecting_failure_method

`

585

``

`-

outcome = _Outcome(result)

`

586

``

`-

try:

`

587

``

`-

self._outcome = outcome

`

``

578

`+

return

`

``

579

+

``

580

`+

expecting_failure = (

`

``

581

`+

getattr(self, "unittest_expecting_failure", False) or

`

``

582

`+

getattr(testMethod, "unittest_expecting_failure", False)

`

``

583

`+

)

`

``

584

`+

outcome = _Outcome(result)

`

``

585

`+

try:

`

``

586

`+

self._outcome = outcome

`

588

587

``

589

``

`-

with outcome.testPartExecutor(self):

`

590

``

`-

self._callSetUp()

`

591

``

`-

if outcome.success:

`

592

``

`-

outcome.expecting_failure = expecting_failure

`

593

``

`-

with outcome.testPartExecutor(self, isTest=True):

`

594

``

`-

self._callTestMethod(testMethod)

`

595

``

`-

outcome.expecting_failure = False

`

596

588

`with outcome.testPartExecutor(self):

`

597

``

`-

self._callTearDown()

`

598

``

-

599

``

`-

self.doCleanups()

`

600

``

`-

for test, reason in outcome.skipped:

`

601

``

`-

self._addSkip(result, test, reason)

`

602

``

`-

self._feedErrorsToResult(result, outcome.errors)

`

603

``

`-

if outcome.success:

`

604

``

`-

if expecting_failure:

`

605

``

`-

if outcome.expectedFailure:

`

606

``

`-

self._addExpectedFailure(result, outcome.expectedFailure)

`

``

589

`+

self._callSetUp()

`

``

590

`+

if outcome.success:

`

``

591

`+

outcome.expecting_failure = expecting_failure

`

``

592

`+

with outcome.testPartExecutor(self, isTest=True):

`

``

593

`+

self._callTestMethod(testMethod)

`

``

594

`+

outcome.expecting_failure = False

`

``

595

`+

with outcome.testPartExecutor(self):

`

``

596

`+

self._callTearDown()

`

``

597

+

``

598

`+

self.doCleanups()

`

``

599

`+

for test, reason in outcome.skipped:

`

``

600

`+

self._addSkip(result, test, reason)

`

``

601

`+

self._feedErrorsToResult(result, outcome.errors)

`

``

602

`+

if outcome.success:

`

``

603

`+

if expecting_failure:

`

``

604

`+

if outcome.expectedFailure:

`

``

605

`+

self._addExpectedFailure(result, outcome.expectedFailure)

`

``

606

`+

else:

`

``

607

`+

self._addUnexpectedSuccess(result)

`

607

608

`else:

`

608

``

`-

self._addUnexpectedSuccess(result)

`

609

``

`-

else:

`

610

``

`-

result.addSuccess(self)

`

611

``

`-

return result

`

``

609

`+

result.addSuccess(self)

`

``

610

`+

return result

`

``

611

`+

finally:

`

``

612

`+

explicitly break reference cycles:

`

``

613

`+

outcome.errors -> frame -> outcome -> outcome.errors

`

``

614

`+

outcome.expectedFailure -> frame -> outcome -> outcome.expectedFailure

`

``

615

`+

outcome.errors.clear()

`

``

616

`+

outcome.expectedFailure = None

`

``

617

+

``

618

`+

clear the outcome, no more needed

`

``

619

`+

self._outcome = None

`

``

620

+

612

621

`finally:

`

613

622

`result.stopTest(self)

`

614

``

`-

if orig_result is None:

`

615

``

`-

stopTestRun = getattr(result, 'stopTestRun', None)

`

616

``

`-

if stopTestRun is not None:

`

617

``

`-

stopTestRun()

`

618

``

-

619

``

`-

explicitly break reference cycles:

`

620

``

`-

outcome.errors -> frame -> outcome -> outcome.errors

`

621

``

`-

outcome.expectedFailure -> frame -> outcome -> outcome.expectedFailure

`

622

``

`-

outcome.errors.clear()

`

623

``

`-

outcome.expectedFailure = None

`

624

``

-

625

``

`-

clear the outcome, no more needed

`

626

``

`-

self._outcome = None

`

``

623

`+

if stopTestRun is not None:

`

``

624

`+

stopTestRun()

`

627

625

``

628

626

`def doCleanups(self):

`

629

627

`"""Execute all cleanup functions. Normally called for you after

`