Skip to content

Commit 39861be

Browse files
committed
Fix framework configuration when messenger uses without console
1 parent 7589f3d commit 39861be

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

+11-7
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public function load(array $configs, ContainerBuilder $container)
242242

243243
$container->registerAliasForArgument('parameter_bag', PsrContainerInterface::class);
244244

245-
if (class_exists(Application::class)) {
245+
if ($this->hasConsole()) {
246246
$loader->load('console.php');
247247

248248
if (!class_exists(BaseXliffLintCommand::class)) {
@@ -599,6 +599,11 @@ public function getConfiguration(array $config, ContainerBuilder $container)
599599
return new Configuration($container->getParameter('kernel.debug'));
600600
}
601601

602+
protected function hasConsole(): bool
603+
{
604+
return class_exists(Application::class);
605+
}
606+
602607
private function registerFormConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader)
603608
{
604609
$loader->load('form.php');
@@ -2081,13 +2086,12 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
20812086
throw new LogicException('The "framework.messenger.reset_on_message" configuration option can be set to "true" only. To prevent services resetting after each message you can set the "--no-reset" option in "messenger:consume" command.');
20822087
}
20832088

2084-
if (null === $config['reset_on_message']) {
2085-
if ($container->hasDefinition('console.command.messenger_consume_messages')) {
2086-
trigger_deprecation('symfony/framework-bundle', '5.4', 'Not setting the "framework.messenger.reset_on_message" configuration option is deprecated, it will default to "true" in version 6.0.');
2087-
2088-
$container->getDefinition('console.command.messenger_consume_messages')->replaceArgument(5, null);
2089-
}
2089+
if (!$container->hasDefinition('console.command.messenger_consume_messages')) {
2090+
$container->removeDefinition('messenger.listener.reset_services');
2091+
} elseif (null === $config['reset_on_message']) {
2092+
trigger_deprecation('symfony/framework-bundle', '5.4', 'Not setting the "framework.messenger.reset_on_message" configuration option is deprecated, it will default to "true" in version 6.0.');
20902093

2094+
$container->getDefinition('console.command.messenger_consume_messages')->replaceArgument(5, null);
20912095
$container->removeDefinition('messenger.listener.reset_services');
20922096
}
20932097
}

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

+21-2
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,25 @@ public function testMessenger()
746746
$this->assertSame('messenger.listener.reset_services', (string) $container->getDefinition('console.command.messenger_consume_messages')->getArgument(5));
747747
}
748748

749+
public function testMessengerWithoutConsole()
750+
{
751+
$extension = $this->createPartialMock(FrameworkExtension::class, ['hasConsole', 'getAlias']);
752+
$extension->method('hasConsole')->willReturn(false);
753+
$extension->method('getAlias')->willReturn((new FrameworkExtension())->getAlias());
754+
755+
$container = $this->createContainerFromFile('messenger', [], true, false, $extension);
756+
$container->compile();
757+
758+
$this->assertFalse($container->hasDefinition('console.command.messenger_consume_messages'));
759+
$this->assertTrue($container->hasAlias('messenger.default_bus'));
760+
$this->assertTrue($container->getAlias('messenger.default_bus')->isPublic());
761+
$this->assertTrue($container->hasDefinition('messenger.transport.amqp.factory'));
762+
$this->assertTrue($container->hasDefinition('messenger.transport.redis.factory'));
763+
$this->assertTrue($container->hasDefinition('messenger.transport_factory'));
764+
$this->assertSame(TransportFactory::class, $container->getDefinition('messenger.transport_factory')->getClass());
765+
$this->assertFalse($container->hasDefinition('messenger.listener.reset_services'));
766+
}
767+
749768
public function testMessengerMultipleFailureTransports()
750769
{
751770
$container = $this->createContainerFromFile('messenger_multiple_failure_transports');
@@ -1960,14 +1979,14 @@ protected function createContainer(array $data = [])
19601979
], $data)));
19611980
}
19621981

1963-
protected function createContainerFromFile($file, $data = [], $resetCompilerPasses = true, $compile = true)
1982+
protected function createContainerFromFile($file, $data = [], $resetCompilerPasses = true, $compile = true, FrameworkExtension $extension = null)
19641983
{
19651984
$cacheKey = md5(static::class.$file.serialize($data));
19661985
if ($compile && isset(self::$containerCache[$cacheKey])) {
19671986
return self::$containerCache[$cacheKey];
19681987
}
19691988
$container = $this->createContainer($data);
1970-
$container->registerExtension(new FrameworkExtension());
1989+
$container->registerExtension($extension ?: new FrameworkExtension());
19711990
$this->loadFromFile($container, $file);
19721991

19731992
if ($resetCompilerPasses) {

0 commit comments

Comments
 (0)