diff --git a/core/includes/common.inc b/core/includes/common.inc index 718a34b..01117ff 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -7925,12 +7925,10 @@ function queue($name, $reliable = FALSE) { if (!$class) { $class = variable_get('queue_default_class', 'Drupal\Core\Queue\System'); } - $object = new $class($name); - if ($reliable && !$object instanceof ReliableQueueInterface) { + if ($reliable && in_array('ReliableQueueInterface', class_implements($class))) { $class = variable_get('queue_default_reliable_class', 'Drupal\Core\Queue\System'); - $object = new $class($name); } - $queues[$name] = $object; + $queues[$name] = new $class($name); } return $queues[$name]; } diff --git a/core/modules/simpletest/tests/queue.test b/core/modules/simpletest/tests/queue.test index ef34558..8ed251c 100644 --- a/core/modules/simpletest/tests/queue.test +++ b/core/modules/simpletest/tests/queue.test @@ -1,5 +1,8 @@ randomName()); + $queue1 = new System($this->randomName()); $queue1->createQueue(); - $queue2 = queue($this->randomName()); + $queue2 = new System($this->randomName()); $queue2->createQueue(); + $this->queueTest($queue1, $queue2); + } + + /** + * Tests the Memory queue. + */ + function testMemoryQueue() { + // Create two queues. + $queue1 = new Memory($this->randomName()); + $queue1->createQueue(); + $queue2 = new Memory($this->randomName()); + $queue2->createQueue(); + + $this->queueTest($queue1, $queue2); + } + + /** + * Queues and dequeues a set of items to check the basic queue functionality. + * + * @param Drupal\Core\Queue\QueueInterface $queue1 + * An instantiated queue object. + * @param Drupal\Core\Queue\QueueInterface $queue2 + * An instantiated queue object. + */ + function queueTest($queue1, $queue2) { // Create four items. $data = array(); for ($i = 0; $i < 4; $i++) {