Mercurial > hg > cmmr2012-drupal-site
diff core/modules/simpletest/src/TestServiceProvider.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/simpletest/src/TestServiceProvider.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,55 @@ +<?php + +namespace Drupal\simpletest; + +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\DependencyInjection\ServiceModifierInterface; +use Drupal\Core\DependencyInjection\ServiceProviderInterface; +use Symfony\Component\DependencyInjection\Definition; + +class TestServiceProvider implements ServiceProviderInterface, ServiceModifierInterface { + + /** + * @var \Drupal\simpletest\TestBase; + */ + public static $currentTest; + + /** + * {@inheritdoc} + */ + public function register(ContainerBuilder $container) { + if (static::$currentTest && method_exists(static::$currentTest, 'containerBuild')) { + static::$currentTest->containerBuild($container); + } + } + + /** + * {@inheritdoc} + */ + public function alter(ContainerBuilder $container) { + if (static::$currentTest instanceof KernelTestBase) { + static::addRouteProvider($container); + } + } + + /** + * Add the on demand rebuild route provider service. + * + * @param \Drupal\Core\DependencyInjection\ContainerBuilder $container + */ + public static function addRouteProvider(ContainerBuilder $container) { + foreach (['router.route_provider' => 'RouteProvider'] as $original_id => $class) { + // While $container->get() does a recursive resolve, getDefinition() does + // not, so do it ourselves. + // @todo Make the code more readable in + // https://www.drupal.org/node/2911498. + for ($id = $original_id; $container->hasAlias($id); $id = (string) $container->getAlias($id)) { + } + $definition = $container->getDefinition($id); + $definition->clearTag('needs_destruction'); + $container->setDefinition("simpletest.$original_id", $definition); + $container->setDefinition($id, new Definition('Drupal\simpletest\\' . $class)); + } + } + +}