diff --git a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php index 1edaec3..f9cc1d8 100644 --- a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php +++ b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php @@ -95,4 +95,15 @@ public function __sleep() { return array_keys(get_object_vars($this)); } + /** + * {@inheritdoc} + */ + public function getDefinition($id) { + $id = strtolower($id); + if ($this->hasAlias($id)) { + $id = $this->getAlias($id); + } + return parent::getDefinition($id); + } + } diff --git a/core/modules/simpletest/src/TestServiceProvider.php b/core/modules/simpletest/src/TestServiceProvider.php index 5a1a398..bf02cd3 100644 --- a/core/modules/simpletest/src/TestServiceProvider.php +++ b/core/modules/simpletest/src/TestServiceProvider.php @@ -33,13 +33,13 @@ function register(ContainerBuilder $container) { */ public function alter(ContainerBuilder $container) { if (static::$currentTest instanceof KernelTestBase) { - // While $container->get() does a recursive resolve, getDefinition() does - // not, so do it ourselves. foreach (['router.route_provider' => 'RouteProvider'] as $original_id => $class) { - for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)); - $definition = $container->getDefinition($id); + $definition = $container->getDefinition($original_id); $definition->clearTag('needs_destruction'); $container->setDefinition("simpletest.$original_id", $definition); + + // Resolve $original_id to its final $id similar to get(). + $id = $container->hasAlias($original_id) ? $container->getAlias($original_id) : $original_id; $container->setDefinition($id, new Definition('Drupal\simpletest\\' . $class)); } }