diff --git a/tests/Acceptance/App/RuntimeBuilder.php b/tests/Acceptance/App/RuntimeBuilder.php index 7aadba1a..fe3d2476 100644 --- a/tests/Acceptance/App/RuntimeBuilder.php +++ b/tests/Acceptance/App/RuntimeBuilder.php @@ -91,7 +91,7 @@ private static function iterateClasses(string $featuresDir, string $ns): iterabl $feature = new Feature( testClass: $class, testNamespace: $namespace, - taskQueue: $namespace, + taskQueue: TaskQueueResolver::resolve($class, $namespace), ); yield $feature => \array_filter( diff --git a/tests/Acceptance/App/TaskQueueResolver.php b/tests/Acceptance/App/TaskQueueResolver.php new file mode 100644 index 00000000..fc12ecf9 --- /dev/null +++ b/tests/Acceptance/App/TaskQueueResolver.php @@ -0,0 +1,51 @@ + + */ + private const SHARED_QUEUE_EXCLUSIONS = [ + \Temporal\Tests\Acceptance\Extra\Workflow\WorkflowA\WorkflowATest::class, + \Temporal\Tests\Acceptance\Extra\Workflow\WorkflowB\WorkflowBTest::class, + \Temporal\Tests\Acceptance\Harness\Activity\RetryOnError\RetryOnErrorTest::class, + \Temporal\Tests\Acceptance\Harness\Update\Self\SelfTest::class, + \Temporal\Tests\Acceptance\Harness\Update\Activities\ActivitiesTest::class, + \Temporal\Tests\Acceptance\Harness\Signal\Activities\ActivitiesTest::class, + \Temporal\Tests\Acceptance\Extra\Versioning\Classic\ClassicTest::class, + \Temporal\Tests\Acceptance\Extra\Versioning\Deployment\DeploymentTest::class, + ]; + + /** + * @param class-string $class + * @param non-empty-string $namespace + * @return non-empty-string + */ + public static function resolve(string $class, string $namespace): string + { + if (\in_array($class, self::SHARED_QUEUE_EXCLUSIONS, true)) { + return $namespace; + } + + $reflection = new \ReflectionClass($class); + foreach ($reflection->getAttributes(Worker::class) as $attribute) { + $worker = $attribute->newInstance(); + if ($worker->pipelineProvider !== null + || $worker->logger !== null + || $worker->plugins !== null + ) { + return $namespace; + } + } + + return self::DEFAULT_TASK_QUEUE; + } +}