From 18949dc09f308292997b7851cef64a0526c903d4 Mon Sep 17 00:00:00 2001
From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com>
Date: Fri, 22 Mar 2024 00:32:32 +0100
Subject: [PATCH] fix?: run swoole tests in separate processes

---
 phpunit.xml                                      |  3 ---
 ...ableTaskTableSlotStatusUpdateIteratorTest.php | 16 +++-------------
 src/ObservableTaskTableTest.php                  |  2 ++
 src/SwooleTimeoutTest.php                        |  2 ++
 4 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/phpunit.xml b/phpunit.xml
index 18666a22..5c27d5c8 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -14,7 +14,4 @@
             <directory suffix=".php">src</directory>
         </include>
     </source>
-    <php>
-        <!-- <env name="DB_CONNECTION" value="sqlite" /> -->
-    </php>
 </phpunit>
diff --git a/src/ObservableTaskTableSlotStatusUpdateIteratorTest.php b/src/ObservableTaskTableSlotStatusUpdateIteratorTest.php
index 2ac33652..109cefbd 100644
--- a/src/ObservableTaskTableSlotStatusUpdateIteratorTest.php
+++ b/src/ObservableTaskTableSlotStatusUpdateIteratorTest.php
@@ -6,15 +6,15 @@ namespace Distantmagic\Resonance;
 
 use Distantmagic\Resonance\Serializer\Vanilla;
 use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\RunClassInSeparateProcess;
 use PHPUnit\Framework\TestCase;
-use Swoole\Coroutine;
-use Swoole\Coroutine\WaitGroup;
 use Swoole\Event;
 
 /**
  * @internal
  */
 #[CoversClass(ObservableTaskTableSlotStatusUpdateIterator::class)]
+#[RunClassInSeparateProcess]
 final class ObservableTaskTableSlotStatusUpdateIteratorTest extends TestCase
 {
     private ?ObservableTaskConfiguration $observableTaskConfiguration = null;
@@ -41,8 +41,6 @@ final class ObservableTaskTableSlotStatusUpdateIteratorTest extends TestCase
     public function test_channel_is_observed(): void
     {
         SwooleCoroutineHelper::mustRun(function () {
-            $wg = new WaitGroup();
-
             $observableTask = new ObservableTask(static function () {
                 yield new ObservableTaskStatusUpdate(
                     ObservableTaskStatus::Running,
@@ -55,15 +53,9 @@ final class ObservableTaskTableSlotStatusUpdateIteratorTest extends TestCase
                 );
             });
 
-            $wg->add();
-
-            SwooleCoroutineHelper::mustGo(function () use ($wg) {
+            SwooleCoroutineHelper::mustGo(function () {
                 self::assertNotNull($this->observableTaskTable);
 
-                Coroutine::defer(static function () use ($wg) {
-                    $wg->done();
-                });
-
                 $iterator = new ObservableTaskTableSlotStatusUpdateIterator($this->observableTaskTable);
 
                 foreach ($iterator as $statusUpdate) {
@@ -81,8 +73,6 @@ final class ObservableTaskTableSlotStatusUpdateIteratorTest extends TestCase
             });
 
             $this->observableTaskTable?->observe($observableTask);
-
-            $wg->wait();
         });
     }
 }
diff --git a/src/ObservableTaskTableTest.php b/src/ObservableTaskTableTest.php
index c44043f3..17355353 100644
--- a/src/ObservableTaskTableTest.php
+++ b/src/ObservableTaskTableTest.php
@@ -6,6 +6,7 @@ namespace Distantmagic\Resonance;
 
 use Distantmagic\Resonance\Serializer\Vanilla;
 use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\RunClassInSeparateProcess;
 use PHPUnit\Framework\TestCase;
 use Swoole\Coroutine;
 use Swoole\Coroutine\Channel;
@@ -16,6 +17,7 @@ use Swoole\Event;
  * @internal
  */
 #[CoversClass(ObservableTaskTable::class)]
+#[RunClassInSeparateProcess]
 final class ObservableTaskTableTest extends TestCase
 {
     private ?ObservableTaskConfiguration $observableTaskConfiguration = null;
diff --git a/src/SwooleTimeoutTest.php b/src/SwooleTimeoutTest.php
index 9e1bc0ae..9b3b3b15 100644
--- a/src/SwooleTimeoutTest.php
+++ b/src/SwooleTimeoutTest.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
 namespace Distantmagic\Resonance;
 
 use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\RunClassInSeparateProcess;
 use PHPUnit\Framework\TestCase;
 use Swoole\Event;
 
@@ -14,6 +15,7 @@ use Swoole\Event;
 #[CoversClass(SwooleTimeout::class)]
 #[CoversClass(SwooleTimeoutScheduled::class)]
 #[CoversClass(SwooleTimeoutScheduler::class)]
+#[RunClassInSeparateProcess]
 final class SwooleTimeoutTest extends TestCase
 {
     protected function tearDown(): void
-- 
GitLab