From be92792abf438c91fbfc40f96458d5be8d35b267 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Thu, 12 Sep 2024 09:02:22 +0200 Subject: [PATCH 1/4] Reset TestTransport on ensureKernelShutdown --- src/InteractsWithMessenger.php | 22 ++++++++++++++++++++++ src/Transport/TestTransport.php | 20 ++++++++++++++++++++ src/ZenstruckMessengerTestBundle.php | 5 ++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/InteractsWithMessenger.php b/src/InteractsWithMessenger.php index f0e2783..7f31b7c 100644 --- a/src/InteractsWithMessenger.php +++ b/src/InteractsWithMessenger.php @@ -47,6 +47,17 @@ final protected static function _enableMessagesCollection(): void TestBus::enableMessagesCollection(); } + /** + * @internal + * + * @before + */ + #[Before] + final protected static function _disableResetOnKernelShutdown(): void + { + TestTransport::disableResetOnKernelShutdown(); + } + /** * @internal * @@ -71,6 +82,17 @@ final protected static function _resetMessengerTransports(): void TestBus::resetAll(); } + /** + * @internal + * + * @after + */ + #[After] + final protected static function _enableResetOnKernelShutdown(): void + { + TestTransport::enableResetOnKernelShutdown(); + } + /** * @deprecated use transport() instead */ diff --git a/src/Transport/TestTransport.php b/src/Transport/TestTransport.php index af122a5..0ee75ca 100644 --- a/src/Transport/TestTransport.php +++ b/src/Transport/TestTransport.php @@ -77,6 +77,7 @@ final class TestTransport implements TransportInterface, ListableReceiverInterfa // this setting applies to all transports private static bool $enableMessagesCollection = true; + private static bool $resetOnKernelShutdownEnabled = true; /** * @internal @@ -411,6 +412,25 @@ public function supportsDelayStamp(): bool return $this->clock && self::$supportDelayStamp[$this->name]; } + public function resetOnKernelShutdown(): void + { + if (!self::$resetOnKernelShutdownEnabled) { + return; + } + + $this->reset(); + } + + public static function enableResetOnKernelShutdown(): void + { + self::$resetOnKernelShutdownEnabled = true; + } + + public static function disableResetOnKernelShutdown(): void + { + self::$resetOnKernelShutdownEnabled = false; + } + /** * @param array $messagesCollection */ diff --git a/src/ZenstruckMessengerTestBundle.php b/src/ZenstruckMessengerTestBundle.php index 20edcfe..1612908 100644 --- a/src/ZenstruckMessengerTestBundle.php +++ b/src/ZenstruckMessengerTestBundle.php @@ -62,8 +62,9 @@ public function process(ContainerBuilder $container): void foreach ($container->findTaggedServiceIds('messenger.receiver') as $id => $tags) { $name = $id; + $transport = $container->getDefinition($name); - if (!$class = $container->getDefinition($name)->getClass()) { + if (!$class = $transport->getClass()) { continue; } @@ -71,6 +72,8 @@ public function process(ContainerBuilder $container): void continue; } + $transport->addTag('kernel.reset', ['method' => 'resetOnKernelShutdown', 'on_invalid' => 'ignore']); + foreach ($tags as $tag) { if (isset($tag['alias'])) { $name = $tag['alias']; From ab984738a9676b78266e5e9a32da447868f445c1 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Fri, 13 Sep 2024 18:13:10 +0200 Subject: [PATCH 2/4] Test --- .../NotInteractsWithMessengerBeforeTest.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php b/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php index aad541b..4900483 100644 --- a/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php +++ b/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php @@ -16,6 +16,7 @@ use Symfony\Component\Messenger\MessageBusInterface; use Zenstruck\Messenger\Test\Tests\Fixture\Messenger\MessageA; use Zenstruck\Messenger\Test\Tests\Fixture\Messenger\MessageAHandler; +use Zenstruck\Messenger\Test\Transport\TestTransport; use Zenstruck\Messenger\Test\Transport\TestTransportRegistry; /** @@ -24,6 +25,12 @@ */ class NotInteractsWithMessengerBeforeTest extends KernelTestCase { + public static function setUpBeforeClass(): void + { + // Reset to default value to emulate first test in suit behavior + TestTransport::enableMessagesCollection(); + } + /** * @test */ From 688b12ccb770787874a506cc23adee37c0caeb21 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Fri, 13 Sep 2024 18:48:39 +0200 Subject: [PATCH 3/4] Fix typo --- .../NotInteractsWithMessengerBeforeTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php b/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php index 4900483..5491cdf 100644 --- a/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php +++ b/tests/TransportsAreResetCorrectly/NotInteractsWithMessengerBeforeTest.php @@ -27,7 +27,7 @@ class NotInteractsWithMessengerBeforeTest extends KernelTestCase { public static function setUpBeforeClass(): void { - // Reset to default value to emulate first test in suit behavior + // Reset to default value to emulate first test in suite behavior TestTransport::enableMessagesCollection(); } From 267ab2f037efffe1058e510f1a917f3aaa42d710 Mon Sep 17 00:00:00 2001 From: HypeMC Date: Thu, 26 Sep 2024 19:10:37 +0200 Subject: [PATCH 4/4] Set lowest deps --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6384802..c1e9a6e 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "require": { "php": ">=8.1", "symfony/deprecation-contracts": "^2.2|^3.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4.44|^6.0|^7.0", "symfony/messenger": "^5.4|^6.0|^7.0", "zenstruck/assert": "^1.0" },