diff --git a/core/lib/Drupal/Component/FileCache/FileCache.php b/core/lib/Drupal/Component/FileCache/FileCache.php index 761d490f996..36b833735d8 100644 --- a/core/lib/Drupal/Component/FileCache/FileCache.php +++ b/core/lib/Drupal/Component/FileCache/FileCache.php @@ -153,4 +153,13 @@ class FileCache implements FileCacheInterface { } } + /** + * Resets the static cache. + * + * @todo Replace this once https://www.drupal.org/node/2260187 is in. + */ + public static function reset() { + static::$cached = []; + } + } diff --git a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php index 3ca387210a7..e9eb7a7c1a1 100644 --- a/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php +++ b/core/modules/system/tests/src/Kernel/Extension/ModuleHandlerTest.php @@ -7,6 +7,7 @@ namespace Drupal\Tests\system\Kernel\Extension; +use Drupal\Component\FileCache\FileCacheFactory; use Drupal\Core\DependencyInjection\ContainerBuilder; use \Drupal\Core\Extension\ModuleUninstallValidatorException; use Drupal\KernelTests\KernelTestBase; @@ -18,6 +19,11 @@ use Drupal\KernelTests\KernelTestBase; */ class ModuleHandlerTest extends KernelTestBase { + /** + * {@inheritdoc} + */ + public static $modules = ['system']; + /** * {@inheritdoc} */ @@ -48,7 +54,7 @@ class ModuleHandlerTest extends KernelTestBase { * The basic functionality of retrieving enabled modules. */ function testModuleList() { - $module_list = array(); + $module_list = ['system']; $this->assertModuleList($module_list, 'Initial'); diff --git a/core/tests/Drupal/KernelTests/KernelTestBase.php b/core/tests/Drupal/KernelTests/KernelTestBase.php index 646731da24d..2f554133ef4 100644 --- a/core/tests/Drupal/KernelTests/KernelTestBase.php +++ b/core/tests/Drupal/KernelTests/KernelTestBase.php @@ -7,6 +7,9 @@ namespace Drupal\KernelTests; +use Drupal\Component\FileCache\ApcuFileCacheBackend; +use Drupal\Component\FileCache\FileCache; +use Drupal\Component\FileCache\FileCacheFactory; use Drupal\Component\Utility\Html; use Drupal\Component\Utility\SafeMarkup; use Drupal\Core\Config\ConfigImporter; @@ -214,6 +217,7 @@ abstract class KernelTestBase extends \PHPUnit_Framework_TestCase implements Ser parent::setUp(); $this->root = static::getDrupalRoot(); + $this->initFileCache(); $this->bootEnvironment(); $this->bootKernel(); } @@ -487,6 +491,32 @@ abstract class KernelTestBase extends \PHPUnit_Framework_TestCase implements Ser return $container; } + /** + * Initializes the FileCache component. + * + * We can not use the Settings object in a component, that's why we have to do + * it here instead of \Drupal\Component\FileCache\FileCacheFactory. + */ + protected function initFileCache() { + $configuration = Settings::get('file_cache'); + + // Provide a default configuration, if not set. + if (!isset($configuration['default'])) { + $configuration['default'] = [ + 'class' => FileCache::class, + 'cache_backend_class' => NULL, + 'cache_backend_configuration' => [], + ]; + // @todo Use extension_loaded('apcu') for non-testbot + // https://www.drupal.org/node/2447753. + if (function_exists('apc_fetch')) { + $configuration['default']['cache_backend_class'] = ApcuFileCacheBackend::class; + } + } + FileCacheFactory::setConfiguration($configuration); + FileCacheFactory::setPrefix(Settings::getApcuPrefix('file_cache', $this->root)); + } + /** * Returns Extension objects for $modules to enable. * @@ -633,6 +663,9 @@ abstract class KernelTestBase extends \PHPUnit_Framework_TestCase implements Ser } } + // Clean FileCache cache. + FileCache::reset(); + // Clean up statics, container, and settings. if (function_exists('drupal_static_reset')) { drupal_static_reset(); diff --git a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php index 397b55e8ac6..2c02b7c759b 100644 --- a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php +++ b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php @@ -7,6 +7,7 @@ namespace Drupal\KernelTests; +use Drupal\Component\FileCache\FileCacheFactory; use Drupal\Core\Database\Database; use org\bovigo\vfs\vfsStream; use org\bovigo\vfs\visitor\vfsStreamStructureVisitor; @@ -91,6 +92,8 @@ class KernelTestBaseTest extends KernelTestBase { $this->assertEquals('on', $database->query("SHOW standard_conforming_strings")->fetchField()); $this->assertEquals('escape', $database->query("SHOW bytea_output")->fetchField()); } + + $this->assertNotNull(FileCacheFactory::getPrefix()); } /**