You are here

public function TwigEnvironmentTest::testCacheFilename in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/KernelTests/Core/Theme/TwigEnvironmentTest.php \Drupal\KernelTests\Core\Theme\TwigEnvironmentTest::testCacheFilename()

Ensures that cacheFilename() varies by extensions + deployment identifier.

File

core/tests/Drupal/KernelTests/Core/Theme/TwigEnvironmentTest.php, line 148

Class

TwigEnvironmentTest
Tests the twig environment.

Namespace

Drupal\KernelTests\Core\Theme

Code

public function testCacheFilename() {

  /** @var \Drupal\Core\Template\TwigEnvironment $environment */

  // Note: Later we refetch the twig service in order to bypass its internal
  // static cache.
  $environment = \Drupal::service('twig');
  $template_path = 'core/modules/system/templates/container.html.twig';

  // A template basename greater than the constant
  // TwigPhpStorageCache::SUFFIX_SUBSTRING_LENGTH should get truncated.
  $cache = $environment
    ->getCache();
  $long_name = 'core/modules/system/templates/block--system-messages-block.html.twig';
  $this
    ->assertGreaterThan(TwigPhpStorageCache::SUFFIX_SUBSTRING_LENGTH, strlen(basename($long_name)));
  $class = $environment
    ->getTemplateClass($long_name);
  $key = $cache
    ->generateKey($long_name, $class);
  $prefix = $environment
    ->getTwigCachePrefix();

  // The key should consist of the prefix, an underscore, and two strings
  // each truncated to length TwigPhpStorageCache::SUFFIX_SUBSTRING_LENGTH
  // separated by an underscore.
  $expected = strlen($prefix) + 2 + 2 * TwigPhpStorageCache::SUFFIX_SUBSTRING_LENGTH;
  $this
    ->assertEquals($expected, strlen($key));
  $cache = $environment
    ->getCache();
  $class = $environment
    ->getTemplateClass($template_path);
  $original_filename = $cache
    ->generateKey($template_path, $class);
  \Drupal::service('module_installer')
    ->install([
    'twig_extension_test',
  ]);
  $environment = \Drupal::service('twig');
  $cache = $environment
    ->getCache();
  $class = $environment
    ->getTemplateClass($template_path);
  $new_extension_filename = $cache
    ->generateKey($template_path, $class);
  \Drupal::getContainer()
    ->set('twig', NULL);
  $this
    ->assertNotEquals($original_filename, $new_extension_filename);
}