Skip to content

Commit 2b86207

Browse files
Do not emit a Test\Passed event in addition to a Test\Failed or Test\Errored event when an assertion failure or an unexpected exception is triggered in an after-test method
1 parent 46c2770 commit 2b86207

File tree

8 files changed

+28
-23
lines changed

8 files changed

+28
-23
lines changed

ChangeLog-11.5.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes of the PHPUnit 11.5 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
44

5+
## [11.5.8] - 2025-MM-DD
6+
7+
### Fixed
8+
9+
* A `Test\Passed` event is no longer emitted in addition to a `Test\Failed` or `Test\Errored` event when an assertion failure or an unexpected exception is triggered in an after-test method
10+
511
## [11.5.7] - 2025-02-06
612

713
### Changed
@@ -97,6 +103,7 @@ All notable changes of the PHPUnit 11.5 release series are documented in this fi
97103
* [#6055](https://github.com/sebastianbergmann/phpunit/issues/6055): `assertNotContainsOnly()` (use `assertContainsNotOnlyArray()`, `assertContainsNotOnlyBool()`, `assertContainsNotOnlyCallable()`, `assertContainsNotOnlyFloat()`, `assertContainsNotOnlyInt()`, `assertContainsNotOnlyIterable()`, `assertContainsNotOnlyNumeric()`, `assertContainsNotOnlyObject()`, `assertContainsNotOnlyResource()`, `assertContainsNotOnlyClosedResource()`, `assertContainsNotOnlyScalar()`, or `assertContainsNotOnlyString()` instead)
98104
* [#6059](https://github.com/sebastianbergmann/phpunit/issues/6059): `containsOnly()` (use `containsOnlyArray()`, `containsOnlyBool()`, `containsOnlyCallable()`, `containsOnlyFloat()`, `containsOnlyInt()`, `containsOnlyIterable()`, `containsOnlyNumeric()`, `containsOnlyObject()`, `containsOnlyResource()`, `containsOnlyClosedResource()`, `containsOnlyScalar()`, or `containsOnlyString()` instead)
99105

106+
[11.5.8]: https://github.com/sebastianbergmann/phpunit/compare/11.5.7...11.5
100107
[11.5.7]: https://github.com/sebastianbergmann/phpunit/compare/11.5.6...11.5.7
101108
[11.5.6]: https://github.com/sebastianbergmann/phpunit/compare/11.5.5...11.5.6
102109
[11.5.5]: https://github.com/sebastianbergmann/phpunit/compare/11.5.4...11.5.5

src/Framework/TestCase.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -582,27 +582,14 @@ final public function runBare(): void
582582
$this->performAssertionsOnOutput();
583583
}
584584

585-
if ($this->status->isSuccess()) {
586-
$emitter->testPassed(
587-
$this->valueObjectForEvents(),
588-
);
589-
590-
if (!$this->usesDataProvider()) {
591-
PassedTests::instance()->testMethodPassed(
592-
$this->valueObjectForEvents(),
593-
$this->testResult,
594-
);
595-
}
596-
}
597-
598585
try {
599586
$this->mockObjects = [];
600587

601588
/** @phpstan-ignore catch.neverThrown */
602-
} catch (Throwable $t) {
589+
} catch (Throwable $e) {
603590
Event\Facade::emitter()->testErrored(
604591
$this->valueObjectForEvents(),
605-
Event\Code\ThrowableBuilder::from($t),
592+
Event\Code\ThrowableBuilder::from($e),
606593
);
607594
}
608595

@@ -638,6 +625,19 @@ final public function runBare(): void
638625
}
639626
}
640627

628+
if (!isset($e) && !isset($_e)) {
629+
$emitter->testPassed(
630+
$this->valueObjectForEvents(),
631+
);
632+
633+
if (!$this->usesDataProvider()) {
634+
PassedTests::instance()->testMethodPassed(
635+
$this->valueObjectForEvents(),
636+
$this->testResult,
637+
);
638+
}
639+
}
640+
641641
if (!$outputBufferingStopped) {
642642
$this->stopOutputBuffering();
643643
}

tests/end-to-end/event/assertion-failure-in-after-test-method.phpt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Test Runner Execution Started (1 test)
2121
Test Suite Started (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest, 1 test)
2222
Test Preparation Started (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest::testOne)
2323
Test Prepared (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest::testOne)
24-
Test Passed (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest::testOne)
2524
After Test Method Called (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest::afterTest)
2625
After Test Method Errored (PHPUnit\TestFixture\Event\AssertionFailureInTearDownTest::afterTest)
2726
Failed asserting that false is true.

tests/end-to-end/event/exception-in-after-test-method.phpt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Test Runner Execution Started (1 test)
2121
Test Suite Started (PHPUnit\TestFixture\Event\ExceptionInTearDownTest, 1 test)
2222
Test Preparation Started (PHPUnit\TestFixture\Event\ExceptionInTearDownTest::testOne)
2323
Test Prepared (PHPUnit\TestFixture\Event\ExceptionInTearDownTest::testOne)
24-
Test Passed (PHPUnit\TestFixture\Event\ExceptionInTearDownTest::testOne)
2524
After Test Method Called (PHPUnit\TestFixture\Event\ExceptionInTearDownTest::tearDown)
2625
After Test Method Errored (PHPUnit\TestFixture\Event\ExceptionInTearDownTest::tearDown)
2726
After Test Method Finished:

tests/end-to-end/event/template-methods-isolation.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ Test Prepared (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
3838
Post Condition Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions)
3939
Post Condition Method Finished:
4040
- PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions
41-
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
4241
After Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown)
4342
After Test Method Finished:
4443
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown
4544
After Last Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass)
4645
After Last Test Method Finished:
4746
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass
47+
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
4848
Test Finished (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
4949
Child Process Finished
5050
Child Process Started
@@ -62,13 +62,13 @@ Test Prepared (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
6262
Post Condition Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions)
6363
Post Condition Method Finished:
6464
- PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions
65-
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
6665
After Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown)
6766
After Test Method Finished:
6867
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown
6968
After Last Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass)
7069
After Last Test Method Finished:
7170
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass
71+
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
7272
Test Finished (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
7373
Child Process Finished
7474
After Last Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass)

tests/end-to-end/event/template-methods.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ Test Prepared (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
3333
Post Condition Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions)
3434
Post Condition Method Finished:
3535
- PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions
36-
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
3736
After Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown)
3837
After Test Method Finished:
3938
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown
39+
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
4040
Test Finished (PHPUnit\TestFixture\Event\TemplateMethodsTest::testOne)
4141
Test Preparation Started (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
4242
Before Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::setUp)
@@ -49,10 +49,10 @@ Test Prepared (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
4949
Post Condition Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions)
5050
Post Condition Method Finished:
5151
- PHPUnit\TestFixture\Event\TemplateMethodsTest::assertPostConditions
52-
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
5352
After Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown)
5453
After Test Method Finished:
5554
- PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDown
55+
Test Passed (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
5656
Test Finished (PHPUnit\TestFixture\Event\TemplateMethodsTest::testTwo)
5757
After Last Test Method Called (PHPUnit\TestFixture\Event\TemplateMethodsTest::tearDownAfterClass)
5858
After Last Test Method Finished:

tests/end-to-end/metadata/hook-methods-order.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ Before Test Method Finished:
3737
- PHPUnit\TestFixture\HookMethodsOrderTest::beforeSecond
3838
- PHPUnit\TestFixture\HookMethodsOrderTest::setUp
3939
Test Prepared (PHPUnit\TestFixture\HookMethodsOrderTest::testOne)
40-
Test Passed (PHPUnit\TestFixture\HookMethodsOrderTest::testOne)
4140
After Test Method Called (PHPUnit\TestFixture\HookMethodsOrderTest::afterWithPriority)
4241
After Test Method Called (PHPUnit\TestFixture\HookMethodsOrderTest::afterWithPriorityInParent)
4342
After Test Method Called (PHPUnit\TestFixture\HookMethodsOrderTest::tearDown)
@@ -51,6 +50,7 @@ After Test Method Finished:
5150
- PHPUnit\TestFixture\HookMethodsOrderTest::afterFirst
5251
- PHPUnit\TestFixture\HookMethodsOrderTest::afterSecond
5352
- PHPUnit\TestFixture\HookMethodsOrderTest::afterInParent
53+
Test Passed (PHPUnit\TestFixture\HookMethodsOrderTest::testOne)
5454
Test Finished (PHPUnit\TestFixture\HookMethodsOrderTest::testOne)
5555
Test Suite Finished (PHPUnit\TestFixture\HookMethodsOrderTest, 1 test)
5656
Test Runner Execution Finished

tests/end-to-end/regression/5498.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ Before Test Method Finished:
3030
- PHPUnit\TestFixture\Issue5498\Test::parentBefore
3131
- PHPUnit\TestFixture\Issue5498\Test::before
3232
Test Prepared (PHPUnit\TestFixture\Issue5498\Test::testOne)
33-
Test Passed (PHPUnit\TestFixture\Issue5498\Test::testOne)
3433
After Test Method Called (PHPUnit\TestFixture\Issue5498\Test::after)
3534
After Test Method Called (PHPUnit\TestFixture\Issue5498\Test::parentAfter)
3635
After Test Method Finished:
3736
- PHPUnit\TestFixture\Issue5498\Test::after
3837
- PHPUnit\TestFixture\Issue5498\Test::parentAfter
38+
Test Passed (PHPUnit\TestFixture\Issue5498\Test::testOne)
3939
Test Finished (PHPUnit\TestFixture\Issue5498\Test::testOne)
4040
Test Suite Finished (PHPUnit\TestFixture\Issue5498\Test, 1 test)
4141
Test Suite Finished (CLI Arguments, 1 test)

0 commit comments

Comments
 (0)