1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- namespace Drupal\KernelTests\Core\DrupalKernel;
- use Drupal\Core\Site\Settings;
- use Drupal\KernelTests\KernelTestBase;
- /**
- * Tests site-specific service overrides.
- *
- * @group DrupalKernel
- */
- class DrupalKernelSiteTest extends KernelTestBase {
- /**
- * Tests services.yml in site directory.
- */
- public function testServicesYml() {
- $container_yamls = Settings::get('container_yamls');
- $container_yamls[] = $this->siteDirectory . '/services.yml';
- $this->setSetting('container_yamls', $container_yamls);
- $this->assertFalse($this->container->has('site.service.yml'));
- // A service provider class always has precedence over services.yml files.
- // KernelTestBase::buildContainer() swaps out many services with in-memory
- // implementations already, so those cannot be tested.
- $this->assertIdentical(get_class($this->container->get('cache.backend.database')), 'Drupal\Core\Cache\DatabaseBackendFactory');
- $class = __CLASS__;
- $doc = <<<EOD
- services:
- # Add a new service.
- site.service.yml:
- class: $class
- # Swap out a core service.
- cache.backend.database:
- class: Drupal\Core\Cache\MemoryBackendFactory
- EOD;
- file_put_contents($this->siteDirectory . '/services.yml', $doc);
- // Rebuild the container.
- $this->container->get('kernel')->rebuildContainer();
- $this->assertTrue($this->container->has('site.service.yml'));
- $this->assertIdentical(get_class($this->container->get('cache.backend.database')), 'Drupal\Core\Cache\MemoryBackendFactory');
- }
- }
|