From a8e9f4092cde3fc1daeea35201027222aa8f1811 Mon Sep 17 00:00:00 2001 From: Maciej Malarz Date: Mon, 25 Mar 2019 22:20:26 +0100 Subject: [PATCH] Test service with factory is not tagged --- .../Tests/Fixtures/BarFactory.php | 21 +++++++++++++++++++ .../yaml/service_instanceof_factory.yml | 14 +++++++++++++ .../Tests/Loader/YamlFileLoaderTest.php | 11 ++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarFactory.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarFactory.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarFactory.php new file mode 100644 index 000000000000..305b206c88b8 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/BarFactory.php @@ -0,0 +1,21 @@ +bars = \iterator_to_array($bars); + } + + public function getDefaultBar(): BarInterface + { + return reset($this->bars); + } +} diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml new file mode 100644 index 000000000000..4ae8303855ea --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/service_instanceof_factory.yml @@ -0,0 +1,14 @@ +services: + _instanceof: + Symfony\Component\DependencyInjection\Tests\Fixtures\BarInterface: + tags: + - { name: bar } + + Symfony\Component\DependencyInjection\Tests\Fixtures\Bar: + public: true + + Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory: + arguments: [!tagged 'bar'] + + Symfony\Component\DependencyInjection\Tests\Fixtures\BarInterface: + factory: ['@Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory', 'getDefaultBar'] diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php index 37e6054f5545..b3090786cf84 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php @@ -770,4 +770,15 @@ public function testFqcnLazyProxy() $definition = $container->getDefinition('foo'); $this->assertSame([['interface' => 'SomeInterface']], $definition->getTag('proxy')); } + + public function testServiceWithSameNameAsInterfaceAndFactoryIsNotTagged() + { + $container = new ContainerBuilder(); + $loader = new YamlFileLoader($container, new FileLocator(self::$fixturesPath.'/yaml')); + $loader->load('service_instanceof_factory.yml'); + $container->compile(); + + $tagged = $container->findTaggedServiceIds('bar'); + $this->assertCount(1, $tagged); + } }