From 30da96279c3559376477f70aee63d663ab0fa2b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BCrk?= Date: Thu, 28 Dec 2023 10:40:06 +0100 Subject: [PATCH] [TASK] Align error handler tests with changed PHPUnit behavior MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHPUnit has changed the behavior of the error handler in several ways, for example introducing a PHP attribute to disable the PHPUnit error handler for tests dealing with `error_get_last()` [1], throwing an exception and stopping the script execution on `E_*_ERROR` or clearing the error result [2] - which breaks the ability to use the native `error_get_last()` method to test custom error handler implementation. Something which TYPO3 needs to do for the provided custom error handler. An additional change [3] to check and restore error handlers with levels has been reverted due to issues in the Laravel world. This change modifies the related test to use the introduced PHP attribute `#[WithoutErrorHandler]` and raises PHPUnit. Note: PHPUnit does not recognize the `@test` doc-block annotation if the `#[WithoutErrorHandler]` attribute is used. Therefore, the attribute counterparts for `@test` and `@dataProvider` has been added on top and not exclusively for now, albeit looking weird and fishy. This needs to be addressed in a more generic way in a dedicated change. Used command(s): > composer require --dev \ "phpunit/phpunit":"^10.5.5" \ "typo3/testing-framework":"^8.0.8" [1] https://github.com/sebastianbergmann/phpunit/pull/5430 [2] https://github.com/sebastianbergmann/phpunit/pull/5592 [3] https://github.com/sebastianbergmann/phpunit/pull/5619 Resolves: #102724 Releases: main, 12.4 Change-Id: I77f750ef2eba53b5f8caa51651f36321ae5d1224 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82283 Reviewed-by: Oliver Klee Reviewed-by: Anja Leichsenring Tested-by: Oliver Klee Tested-by: core-ci Tested-by: Simon Schaufelberger Tested-by: Stefan Bürk Tested-by: Anja Leichsenring Reviewed-by: Stefan Bürk Reviewed-by: Simon Schaufelberger --- Tests/Unit/Error/ErrorHandlerTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Tests/Unit/Error/ErrorHandlerTest.php b/Tests/Unit/Error/ErrorHandlerTest.php index 63f1deed5c..d537921e0a 100644 --- a/Tests/Unit/Error/ErrorHandlerTest.php +++ b/Tests/Unit/Error/ErrorHandlerTest.php @@ -17,6 +17,9 @@ namespace TYPO3\CMS\Core\Tests\Unit\Error; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\Attributes\WithoutErrorHandler; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; use Psr\Log\LogLevel; @@ -64,6 +67,9 @@ public function log($level, string|\Stringable $message, array $context = []): v }; } + #[WithoutErrorHandler] + #[Test] + #[DataProvider('errorTests')] /** * @test * @dataProvider errorTests