diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyCommand.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyCommand.php new file mode 100644 index 0000000000000..c8f800850bee3 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyCommand.php @@ -0,0 +1,30 @@ +addArgument('dummy-argument', InputArgument::OPTIONAL); + } + + public function execute(InputInterface $input, ?OutputInterface $output = null): int + { + self::$calls[__FUNCTION__][] = $input->getArgument('dummy-argument'); + + return Command::SUCCESS; + } +} diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php index 99776e8223e9d..537493a5580b6 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php @@ -12,6 +12,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Functional; use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage; +use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyCommand; use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummySchedule; use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyTask; use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage; @@ -88,6 +89,29 @@ public function testAutoconfiguredScheduler() $this->assertSame([['5', 6], ['7', 8]], $calls['attributesOnMethod']); } + public function testAutoconfiguredSchedulerCommand() + { + $container = self::getContainer(); + $container->set('clock', $clock = new MockClock('2023-10-26T08:59:59Z')); + + $this->assertTrue($container->get('receivers')->has('scheduler_dummy_command')); + $this->assertInstanceOf(SchedulerTransport::class, $cron = $container->get('receivers')->get('scheduler_dummy_command')); + $bus = $container->get(MessageBusInterface::class); + + $getCalls = static function (float $sleep) use ($clock, $cron, $bus) { + DummyCommand::$calls = []; + $clock->sleep($sleep); + foreach ($cron->get() as $message) { + $bus->dispatch($message->with(new ReceivedStamp('scheduler_dummy_command'))); + } + + return DummyCommand::$calls; + }; + + $this->assertSame([], $getCalls(0)); + $this->assertSame(['execute' => [0 => null, 1 => 'test']], $getCalls(1)); + } + public function testSchedulerWithCustomTransport() { $container = self::getContainer(); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Scheduler/config.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Scheduler/config.yml index bd1cb6516b260..f5bc14ec46dc0 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Scheduler/config.yml +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Scheduler/config.yml @@ -16,6 +16,9 @@ services: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyTaskWithCustomReceiver: autoconfigure: true + Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyCommand: + autoconfigure: true + clock: synthetic: true diff --git a/src/Symfony/Component/Scheduler/DependencyInjection/AddScheduleMessengerPass.php b/src/Symfony/Component/Scheduler/DependencyInjection/AddScheduleMessengerPass.php index 696422e0d28da..03d73a7c333a5 100644 --- a/src/Symfony/Component/Scheduler/DependencyInjection/AddScheduleMessengerPass.php +++ b/src/Symfony/Component/Scheduler/DependencyInjection/AddScheduleMessengerPass.php @@ -58,7 +58,9 @@ public function process(ContainerBuilder $container): void if ($serviceDefinition->hasTag('console.command')) { /** @var AsCommand|null $attribute */ $attribute = ($container->getReflectionClass($serviceDefinition->getClass())->getAttributes(AsCommand::class)[0] ?? null)?->newInstance(); - $message = new Definition(RunCommandMessage::class, [$attribute?->name ?? $serviceDefinition->getClass()::getDefaultName().(empty($tagAttributes['arguments']) ? '' : " {$tagAttributes['arguments']}")]); + $commandName = $attribute?->name ?? $serviceDefinition->getClass()::getDefaultName(); + + $message = new Definition(RunCommandMessage::class, [$commandName.($tagAttributes['arguments'] ? " {$tagAttributes['arguments']}" : '')]); } else { $message = new Definition(ServiceCallMessage::class, [$serviceId, $tagAttributes['method'] ?? '__invoke', (array) ($tagAttributes['arguments'] ?? [])]); } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy