Skip to content

Commit d2be391

Browse files
Emit Test\AfterLastTestMethodCalled, Test\AfterLastTestMethodErrored, and Test\AfterLastTestMethodFinished events when an after-last-test method errors
1 parent b360e13 commit d2be391

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

src/Framework/TestSuite.php

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -687,22 +687,29 @@ private function invokeMethodsAfterLastTest(Event\Emitter $emitter): void
687687
continue;
688688
}
689689

690+
$methodCalledAfterLastTest = new Event\Code\ClassMethod(
691+
$this->name,
692+
$afterClassMethod,
693+
);
694+
690695
try {
691696
call_user_func([$this->name, $afterClassMethod]);
697+
} catch (Throwable $t) {
698+
}
692699

693-
$methodCalledAfterLastTest = new Event\Code\ClassMethod(
694-
$this->name,
695-
$afterClassMethod,
696-
);
700+
$emitter->testAfterLastTestMethodCalled(
701+
$this->name,
702+
$methodCalledAfterLastTest,
703+
);
697704

698-
$emitter->testAfterLastTestMethodCalled(
705+
$methodsCalledAfterLastTest[] = $methodCalledAfterLastTest;
706+
707+
if (isset($t)) {
708+
$emitter->testAfterLastTestMethodErrored(
699709
$this->name,
700710
$methodCalledAfterLastTest,
711+
Event\Code\ThrowableBuilder::from($t),
701712
);
702-
703-
$methodsCalledAfterLastTest[] = $methodCalledAfterLastTest;
704-
} catch (Throwable) {
705-
// @todo
706713
}
707714
}
708715

tests/end-to-end/event/exception-in-teardown-after-class.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ Test Prepared (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::test
2424
Assertion Succeeded (Constraint: is true, Value: true)
2525
Test Passed (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::testOne)
2626
Test Finished (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::testOne)
27+
After Last Test Method Called (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::tearDownAfterClass)
28+
After Last Test Method Errored (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::tearDownAfterClass)
29+
After Last Test Method Finished:
30+
- PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest::tearDownAfterClass
2731
Test Suite Finished (PHPUnit\TestFixture\Event\ExceptionInTearDownAfterClassTest, 1 test)
2832
Test Runner Execution Finished
2933
Test Runner Finished

0 commit comments

Comments
 (0)