function TwigEnvironmentTest::testTemplateInvalidation
Same name in other branches
- 8.9.x core/tests/Drupal/KernelTests/Core/Theme/TwigEnvironmentTest.php \Drupal\KernelTests\Core\Theme\TwigEnvironmentTest::testTemplateInvalidation()
- 10 core/tests/Drupal/KernelTests/Core/Theme/TwigEnvironmentTest.php \Drupal\KernelTests\Core\Theme\TwigEnvironmentTest::testTemplateInvalidation()
- 11.x core/tests/Drupal/KernelTests/Core/Theme/TwigEnvironmentTest.php \Drupal\KernelTests\Core\Theme\TwigEnvironmentTest::testTemplateInvalidation()
Tests template invalidation.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Theme/ TwigEnvironmentTest.php, line 199
Class
- TwigEnvironmentTest
- Tests the twig environment.
Namespace
Drupal\KernelTests\Core\ThemeCode
public function testTemplateInvalidation() {
$template_before = <<<TWIG
<div>Hello before</div>
TWIG;
$template_after = <<<TWIG
<div>Hello after</div>
TWIG;
$tempfile = tempnam(sys_get_temp_dir(), '__METHOD__') . '.html.twig';
file_put_contents($tempfile, $template_before);
/** @var \Drupal\Core\Template\TwigEnvironment $environment */
$environment = \Drupal::service('twig');
$output = $environment->load(basename($tempfile))
->render();
$this->assertEquals($template_before, $output);
file_put_contents($tempfile, $template_after);
$output = $environment->load(basename($tempfile))
->render();
$this->assertEquals($template_before, $output);
$environment->invalidate();
// Manually change $templateClassPrefix to force a different template
// classname, as the other class is still loaded. This wouldn't be a problem
// on a real site where you reload the page.
$reflection = new \ReflectionClass(Environment::class);
$property_reflection = $reflection->getProperty('templateClassPrefix');
$property_reflection->setAccessible(TRUE);
$property_reflection->setValue($environment, 'otherPrefix');
$output = $environment->load(basename($tempfile))
->render();
$this->assertEquals($template_after, $output);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.