From 24151cb5af195f9d633a01abd07d658a5039e256 Mon Sep 17 00:00:00 2001 From: David Pocar Date: Wed, 20 Aug 2025 15:13:31 +0200 Subject: [PATCH 1/3] remove matthiasnoback dependency for increased Symfony compatibility --- .github/workflows/ci.yml | 8 +- build/composer-dependency-analyser.config.php | 1 - composer.json | 1 - .../ConsistenceJmsSerializerExtensionTest.php | 87 +++++++++++++++---- 4 files changed, 74 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa0bb6b..aa0a2d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,10 +139,10 @@ jobs: - '7.3' - '7.4' symfony-version: - # - '4.0' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0 - # - '4.1' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0 - # - '4.2' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0 - # - '4.3' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0 + - '4.0' + - '4.1' + - '4.2' + - '4.3' - '4.4' composer-dependencies: - 'highest' diff --git a/build/composer-dependency-analyser.config.php b/build/composer-dependency-analyser.config.php index e1f8777..2186da5 100644 --- a/build/composer-dependency-analyser.config.php +++ b/build/composer-dependency-analyser.config.php @@ -27,7 +27,6 @@ $config = $config->ignoreErrorsOnPackages([ 'consistence/coding-standard', 'phing/phing', - 'phpunit/phpunit', 'php-parallel-lint/php-console-highlighter', 'php-parallel-lint/php-parallel-lint', ], [ErrorType::UNUSED_DEPENDENCY]); diff --git a/composer.json b/composer.json index 1435c68..8941879 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,6 @@ }, "require-dev": { "consistence/coding-standard": "3.10.1", - "matthiasnoback/symfony-dependency-injection-test": "4.3", "php-parallel-lint/php-console-highlighter": "1.0", "php-parallel-lint/php-parallel-lint": "1.3.2", "phing/phing": "2.17.2", diff --git a/tests/DependencyInjection/ConsistenceJmsSerializerExtensionTest.php b/tests/DependencyInjection/ConsistenceJmsSerializerExtensionTest.php index eb75492..f2e6a2a 100644 --- a/tests/DependencyInjection/ConsistenceJmsSerializerExtensionTest.php +++ b/tests/DependencyInjection/ConsistenceJmsSerializerExtensionTest.php @@ -5,34 +5,87 @@ namespace Consistence\JmsSerializer\SymfonyBundle\DependencyInjection; use Consistence\JmsSerializer\Enum\EnumSerializerHandler; +use PHPUnit\Framework\Assert; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; -class ConsistenceJmsSerializerExtensionTest extends \Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase +class ConsistenceJmsSerializerExtensionTest extends \PHPUnit\Framework\TestCase { - /** - * @return \Symfony\Component\DependencyInjection\Extension\ExtensionInterface[] - */ - protected function getContainerExtensions(): array + public function testRegisterSerializerHandler(): void { - return [ - new ConsistenceJmsSerializerExtension(), - ]; + $container = self::createContainer(); + $container->registerExtension(new ConsistenceJmsSerializerExtension()); + + foreach ($container->getExtensions() as $extension) { + $extension->load([], $container); + } + + $serviceId = 'consistence.jms_serializer.enum.enum_serializer_handler'; + self::assertContainerHasService($container, $serviceId); + self::assertContainerServiceIsOfType($container, $serviceId, EnumSerializerHandler::class); + self::assertContainerServiceHasTagWithAttributes( + $container, + $serviceId, + 'jms_serializer.subscribing_handler', + [] + ); + + $container->compile(); } - public function testRegisterSerializerHandler(): void + private static function createContainer(): ContainerBuilder { - $this->load(); + $container = new ContainerBuilder(new ParameterBag([])); + $container->getCompilerPassConfig()->setOptimizationPasses([]); + $container->getCompilerPassConfig()->setRemovingPasses([]); + $container->getCompilerPassConfig()->setAfterRemovingPasses([]); + + return $container; + } - $this->assertContainerBuilderHasService( - 'consistence.jms_serializer.enum.enum_serializer_handler', - EnumSerializerHandler::class + private static function assertContainerHasService(ContainerBuilder $container, string $serviceId): void + { + Assert::assertTrue( + $container->has($serviceId), + sprintf('Container is missing required service `%s`.', $serviceId) ); - $this->assertContainerBuilderHasServiceDefinitionWithTag( - 'consistence.jms_serializer.enum.enum_serializer_handler', - 'jms_serializer.subscribing_handler' + } + + private static function assertContainerServiceIsOfType( + ContainerBuilder $container, + string $serviceId, + string $expectedClassString + ): void + { + $serviceDefinition = $container->findDefinition($serviceId); + + Assert::assertSame( + $expectedClassString, + $container->getParameterBag()->resolveValue($serviceDefinition->getClass()) ); + } + + private static function assertContainerServiceHasTagWithAttributes( + ContainerBuilder $container, + string $serviceId, + string $tagName + ): void + { + $tagExists = false; + $serviceDefinition = $container->findDefinition($serviceId); + + foreach ($serviceDefinition->getTags() as $name => $tagsAttributes) { + if ($name !== $tagName) { + continue; + } + + $tagExists = true; + } - $this->compile(); + if (!$tagExists) { + Assert::fail(sprintf('Service `%s` does not have any tag `%s`.', $serviceId, $tagName)); + } } } From 28a2b5c8806f23873bd440f028b74a972054b48f Mon Sep 17 00:00:00 2001 From: David Pocar Date: Tue, 23 Sep 2025 11:10:30 +0200 Subject: [PATCH 2/3] require Symfony 4.4 --- .github/workflows/ci.yml | 4 ---- composer.json | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa0a2d4..da01ea1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,10 +139,6 @@ jobs: - '7.3' - '7.4' symfony-version: - - '4.0' - - '4.1' - - '4.2' - - '4.3' - '4.4' composer-dependencies: - 'highest' diff --git a/composer.json b/composer.json index 8941879..194b203 100644 --- a/composer.json +++ b/composer.json @@ -13,10 +13,10 @@ "php": "^7.2", "consistence/consistence-jms-serializer": "^2.0", "jms/serializer-bundle": "^3.0", - "symfony/config": "^3.4|^4.0", - "symfony/dependency-injection": "^3.4|^4.0", - "symfony/http-kernel": "^3.4|^4.0", - "symfony/yaml": "^3.4|^4.0" + "symfony/config": "^4.4", + "symfony/dependency-injection": "^4.4", + "symfony/http-kernel": "^4.4", + "symfony/yaml": "^4.4" }, "require-dev": { "consistence/coding-standard": "3.10.1", From ac0ae8260a04aad5dd358c98464b9ebda8d812f7 Mon Sep 17 00:00:00 2001 From: David Pocar Date: Tue, 23 Sep 2025 11:25:18 +0200 Subject: [PATCH 3/3] support Symfony 5 --- .github/workflows/ci.yml | 5 +++++ composer.json | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da01ea1..23eac84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -140,6 +140,11 @@ jobs: - '7.4' symfony-version: - '4.4' + - '5.0' + - '5.1' + - '5.2' + - '5.3' + - '5.4' composer-dependencies: - 'highest' - 'lowest' diff --git a/composer.json b/composer.json index 194b203..40d21e6 100644 --- a/composer.json +++ b/composer.json @@ -13,10 +13,10 @@ "php": "^7.2", "consistence/consistence-jms-serializer": "^2.0", "jms/serializer-bundle": "^3.0", - "symfony/config": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/http-kernel": "^4.4", - "symfony/yaml": "^4.4" + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "require-dev": { "consistence/coding-standard": "3.10.1",