From 67c9c3a599acad749e4f6bf70ee20c41c9a2dc97 Mon Sep 17 00:00:00 2001 From: soyuka Date: Fri, 28 Mar 2025 10:10:39 +0100 Subject: [PATCH 1/3] ci: fail on deprecation w/ symfony dev --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a8ad15dafc..c8da21ddd73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -906,7 +906,7 @@ jobs: - name: Clear test app cache run: tests/Fixtures/app/console cache:clear --ansi - name: Run PHPUnit tests - run: vendor/bin/phpunit + run: vendor/bin/phpunit --fail-on-deprecation behat-symfony-next: name: Behat (PHP ${{ matrix.php }}) (Symfony dev) From 515564dfb1afe623528d65496cd326b5bfcb4c1e Mon Sep 17 00:00:00 2001 From: soyuka Date: Fri, 28 Mar 2025 12:26:15 +0100 Subject: [PATCH 2/3] chore: phpunit missing deprecation triggers --- phpunit.xml.dist | 5 +++++ src/Doctrine/Common/phpunit.xml.dist | 5 +++++ src/Doctrine/Odm/phpunit.xml.dist | 5 +++++ src/Doctrine/Orm/phpunit.xml.dist | 5 +++++ src/Elasticsearch/phpunit.xml.dist | 3 +++ src/GraphQl/phpunit.xml.dist | 3 +++ src/HttpCache/phpunit.xml.dist | 3 +++ src/Hydra/phpunit.xml.dist | 3 +++ src/JsonApi/phpunit.xml.dist | 3 +++ src/JsonSchema/phpunit.xml.dist | 3 +++ src/Laravel/phpunit.xml.dist | 3 +++ src/Metadata/phpunit.xml.dist | 5 +++++ src/OpenApi/phpunit.xml.dist | 3 +++ src/RamseyUuid/phpunit.xml.dist | 3 +++ src/Serializer/phpunit.xml.dist | 3 +++ src/State/phpunit.xml.dist | 3 +++ src/Symfony/phpunit.xml.dist | 3 +++ src/Validator/phpunit.xml.dist | 3 +++ 18 files changed, 64 insertions(+) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 7d28d8a16a0..4b347487936 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -29,6 +29,11 @@ + + trigger_deprecation + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + . diff --git a/src/Doctrine/Common/phpunit.xml.dist b/src/Doctrine/Common/phpunit.xml.dist index 968fa633da6..8872d132b00 100644 --- a/src/Doctrine/Common/phpunit.xml.dist +++ b/src/Doctrine/Common/phpunit.xml.dist @@ -9,6 +9,11 @@ + + trigger_deprecation + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + ./ diff --git a/src/Doctrine/Odm/phpunit.xml.dist b/src/Doctrine/Odm/phpunit.xml.dist index 44fe7563e18..633124afae2 100644 --- a/src/Doctrine/Odm/phpunit.xml.dist +++ b/src/Doctrine/Odm/phpunit.xml.dist @@ -11,6 +11,11 @@ + + trigger_deprecation + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + ./ diff --git a/src/Doctrine/Orm/phpunit.xml.dist b/src/Doctrine/Orm/phpunit.xml.dist index 913b48c606a..12b5bda4b9e 100644 --- a/src/Doctrine/Orm/phpunit.xml.dist +++ b/src/Doctrine/Orm/phpunit.xml.dist @@ -11,6 +11,11 @@ + + trigger_deprecation + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + ./ diff --git a/src/Elasticsearch/phpunit.xml.dist b/src/Elasticsearch/phpunit.xml.dist index 182d2943658..cb89da3af50 100644 --- a/src/Elasticsearch/phpunit.xml.dist +++ b/src/Elasticsearch/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/GraphQl/phpunit.xml.dist b/src/GraphQl/phpunit.xml.dist index ef0e1f48ae8..8134ddd85f8 100644 --- a/src/GraphQl/phpunit.xml.dist +++ b/src/GraphQl/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/HttpCache/phpunit.xml.dist b/src/HttpCache/phpunit.xml.dist index f4da1809545..ce04ce9659e 100644 --- a/src/HttpCache/phpunit.xml.dist +++ b/src/HttpCache/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/Hydra/phpunit.xml.dist b/src/Hydra/phpunit.xml.dist index f88ef8c906e..18549547787 100644 --- a/src/Hydra/phpunit.xml.dist +++ b/src/Hydra/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/JsonApi/phpunit.xml.dist b/src/JsonApi/phpunit.xml.dist index 5c65d384cc4..1d977278d3f 100644 --- a/src/JsonApi/phpunit.xml.dist +++ b/src/JsonApi/phpunit.xml.dist @@ -10,6 +10,9 @@ + + trigger_deprecation + ./ diff --git a/src/JsonSchema/phpunit.xml.dist b/src/JsonSchema/phpunit.xml.dist index 3e1f168b5e2..25e03f648da 100644 --- a/src/JsonSchema/phpunit.xml.dist +++ b/src/JsonSchema/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/Laravel/phpunit.xml.dist b/src/Laravel/phpunit.xml.dist index b3326b6b5d6..dd0e4ed83c2 100644 --- a/src/Laravel/phpunit.xml.dist +++ b/src/Laravel/phpunit.xml.dist @@ -18,6 +18,9 @@ + + trigger_deprecation + ./ diff --git a/src/Metadata/phpunit.xml.dist b/src/Metadata/phpunit.xml.dist index 25405b0834b..99f78dd4e8b 100644 --- a/src/Metadata/phpunit.xml.dist +++ b/src/Metadata/phpunit.xml.dist @@ -9,6 +9,11 @@ + + trigger_deprecation + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + ./ diff --git a/src/OpenApi/phpunit.xml.dist b/src/OpenApi/phpunit.xml.dist index 338e9e11a5f..1affd3ceee4 100644 --- a/src/OpenApi/phpunit.xml.dist +++ b/src/OpenApi/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/RamseyUuid/phpunit.xml.dist b/src/RamseyUuid/phpunit.xml.dist index 579531df2df..4fdf72e160b 100644 --- a/src/RamseyUuid/phpunit.xml.dist +++ b/src/RamseyUuid/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/Serializer/phpunit.xml.dist b/src/Serializer/phpunit.xml.dist index 56504cf1361..35821a9816b 100644 --- a/src/Serializer/phpunit.xml.dist +++ b/src/Serializer/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/State/phpunit.xml.dist b/src/State/phpunit.xml.dist index ab2f6b4c039..3a67530d61b 100644 --- a/src/State/phpunit.xml.dist +++ b/src/State/phpunit.xml.dist @@ -10,6 +10,9 @@ + + trigger_deprecation + ./ diff --git a/src/Symfony/phpunit.xml.dist b/src/Symfony/phpunit.xml.dist index b1a71f31cc1..61b83e4981f 100644 --- a/src/Symfony/phpunit.xml.dist +++ b/src/Symfony/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ diff --git a/src/Validator/phpunit.xml.dist b/src/Validator/phpunit.xml.dist index cdad2003429..024183c5704 100644 --- a/src/Validator/phpunit.xml.dist +++ b/src/Validator/phpunit.xml.dist @@ -9,6 +9,9 @@ + + trigger_deprecation + ./ From fd3cf2f46e0ba834b505ac0e72eeb40a5f6296ae Mon Sep 17 00:00:00 2001 From: soyuka Date: Fri, 11 Apr 2025 11:16:58 +0200 Subject: [PATCH 3/3] ci: apply temporary phpunit patch --- .github/patches/phpunit.patch | 77 +++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 2 + 2 files changed, 79 insertions(+) create mode 100644 .github/patches/phpunit.patch diff --git a/.github/patches/phpunit.patch b/.github/patches/phpunit.patch new file mode 100644 index 00000000000..37b98745cc2 --- /dev/null +++ b/.github/patches/phpunit.patch @@ -0,0 +1,77 @@ +diff --git a/src/Runner/ErrorHandler.php b/src/Runner/ErrorHandler.php +index 54f35aa41..94a2bb600 100644 +--- a/src/Runner/ErrorHandler.php ++++ b/src/Runner/ErrorHandler.php +@@ -59,6 +59,11 @@ final class ErrorHandler + private ?int $originalErrorReportingLevel = null; + private readonly Source $source; + ++ /** ++ * @var list ++ */ ++ private array $globalDeprecations = []; ++ + /** + * @var ?array{functions: list, methods: list} + */ +@@ -197,6 +202,23 @@ public function __invoke(int $errorNumber, string $errorString, string $errorFil + return false; + } + ++ public function deprecationHandler(int $errorNumber, string $errorString, string $errorFile, int $errorLine): bool ++ { ++ $this->globalDeprecations[] = [$errorNumber, $errorString, $errorFile, $errorLine]; ++ ++ return true; ++ } ++ ++ public function registerDeprecationHandler(): void ++ { ++ set_error_handler([self::$instance, 'deprecationHandler'], E_USER_DEPRECATED); ++ } ++ ++ public function restoreDeprecationHandler(): void ++ { ++ restore_error_handler(); ++ } ++ + public function enable(): void + { + if ($this->enabled) { +@@ -213,6 +235,7 @@ public function enable(): void + + $this->enabled = true; + $this->originalErrorReportingLevel = error_reporting(); ++ $this->triggerGlobalDeprecations(); + + error_reporting($this->originalErrorReportingLevel & self::UNHANDLEABLE_LEVELS); + } +@@ -422,4 +445,11 @@ private function stackTrace(): string + + return $buffer; + } ++ ++ private function triggerGlobalDeprecations(): void ++ { ++ foreach ($this->globalDeprecations ?? [] as $d) { ++ $this->__invoke(...$d); ++ } ++ } + } +diff --git a/src/TextUI/Application.php b/src/TextUI/Application.php +index ca6da7005..d8965d41b 100644 +--- a/src/TextUI/Application.php ++++ b/src/TextUI/Application.php +@@ -178,8 +178,12 @@ public function run(array $argv): int + + EventFacade::instance()->seal(); + ++ ErrorHandler::instance()->registerDeprecationHandler(); ++ + $testSuite = $this->buildTestSuite($configuration); + ++ ErrorHandler::instance()->restoreDeprecationHandler(); ++ + $this->executeCommandsThatRequireTheTestSuite($configuration, $cliConfiguration, $testSuite); + + if ($testSuite->isEmpty() && !$configuration->hasCliArguments() && $configuration->testSuite()->isEmpty()) { diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8da21ddd73..0efa1ad2b18 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -862,6 +862,8 @@ jobs: composer global link . - name: Clear test app cache run: tests/Fixtures/app/console cache:clear --ansi + - name: Patch phpunit + run: git apply --directory vendor/phpunit/phpunit .github/patches/phpunit.patch - name: Run PHPUnit tests run: vendor/bin/phpunit --fail-on-deprecation --display-deprecations