3 namespace Drupal\KernelTests\Core\DrupalKernel;
5 use Drupal\Core\Site\Settings;
6 use Drupal\KernelTests\KernelTestBase;
9 * Tests site-specific service overrides.
13 class DrupalKernelSiteTest extends KernelTestBase {
16 * Tests services.yml in site directory.
18 public function testServicesYml() {
19 $container_yamls = Settings::get('container_yamls');
20 $container_yamls[] = $this->siteDirectory . '/services.yml';
21 $this->setSetting('container_yamls', $container_yamls);
22 $this->assertFalse($this->container->has('site.service.yml'));
23 // A service provider class always has precedence over services.yml files.
24 // KernelTestBase::buildContainer() swaps out many services with in-memory
25 // implementations already, so those cannot be tested.
26 $this->assertIdentical(get_class($this->container->get('cache.backend.database')), 'Drupal\Core\Cache\DatabaseBackendFactory');
34 # Swap out a core service.
35 cache.backend.database:
36 class: Drupal\Core\Cache\MemoryBackendFactory
38 file_put_contents($this->siteDirectory . '/services.yml', $doc);
40 // Rebuild the container.
41 $this->container->get('kernel')->rebuildContainer();
43 $this->assertTrue($this->container->has('site.service.yml'));
44 $this->assertIdentical(get_class($this->container->get('cache.backend.database')), 'Drupal\Core\Cache\MemoryBackendFactory');