diff --git a/core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php b/core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php new file mode 100644 index 0000000..e62497b --- /dev/null +++ b/core/modules/system/src/Tests/Theme/TwigRegistryLoaderTest.php @@ -0,0 +1,70 @@ +twig = \Drupal::service('twig'); + } + + /** + * Checks to see if a value is a twig template. + */ + public function assertTwigTemplate($value, $message = '', $group = 'Other') { + $this->assertTrue($value instanceof \Twig_Template, $message, $group); + } + + /** + * Tests template discovery using the Drupal theme registry. + */ + public function testTemplateDiscovery() { + $this->assertTwigTemplate($this->twig->resolveTemplate('block.html.twig'), 'Found block.html.twig in block module.'); + } + + /** + * Tests template extension and includes using the Drupal theme registry. + */ + public function testTwigNamespaces() { + // Test the module-provided extend and insert templates. + $this->drupalGet('twig-theme-test/registry-loader'); + $this->assertText('This line is from twig_theme_test/templates/twig_registry_loader_test_extend.html.twig'); + $this->assertText('This line is from twig_theme_test/templates/twig_registry_loader_test_include.html.twig'); + + // Enable a theme that overrides the extend and insert templates to ensure + // they are picked up by the registry loader. + \Drupal::config('system.theme') + ->set('default', 'test_theme_twig_registry_loader') + ->save(); + $this->drupalGet('twig-theme-test/registry-loader'); + $this->assertText('This line is from test_theme_twig_registry_loader/templates/twig_registry_loader_test_extend.html.twig'); + $this->assertText('This line is from test_theme_twig_registry_loader/templates/twig_registry_loader_test_include.html.twig'); + } + +} diff --git a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php index d454e5f..842a8e8 100644 --- a/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php +++ b/core/modules/system/tests/modules/twig_theme_test/src/TwigThemeTestController.php @@ -37,4 +37,11 @@ public function urlGeneratorRender() { ); } + /** + * Menu callback for testing the Twig registry loader. + */ + public function registryLoaderRender() { + return array('#theme' => 'twig_registry_loader_test'); + } + } diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test.html.twig new file mode 100644 index 0000000..8776f5e --- /dev/null +++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test.html.twig @@ -0,0 +1,5 @@ +{% extends "twig_registry_loader_test_extend.html.twig" %} + +{% block content %} + {% include "twig_registry_loader_test_include.html.twig" %} +{% endblock %} diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_extend.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_extend.html.twig new file mode 100644 index 0000000..a5a5af1 --- /dev/null +++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_extend.html.twig @@ -0,0 +1,5 @@ +This line is from twig_theme_test/templates/twig_registry_loader_test_extend.html.twig + +{% block content %} +This text is in a block. +{% endblock %} diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_include.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_include.html.twig new file mode 100644 index 0000000..bb8c056 --- /dev/null +++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_registry_loader_test_include.html.twig @@ -0,0 +1 @@ +This line is from twig_theme_test/templates/twig_registry_loader_test_include.html.twig diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module index 0497c7b..046e994 100644 --- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module +++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.module @@ -19,6 +19,18 @@ function twig_theme_test_theme($existing, $type, $theme, $path) { 'variables' => array(), 'template' => 'twig_namespace_test', ); + $items['twig_registry_loader_test'] = array( + 'variables' => array(), + 'template' => 'twig_registry_loader_test', + ); + $items['twig_registry_loader_test_include'] = array( + 'variables' => array(), + 'template' => 'twig_registry_loader_test_include', + ); + $items['twig_registry_loader_test_extend'] = array( + 'variables' => array(), + 'template' => 'twig_registry_loader_test_extend', + ); $items['twig_raw_test'] = array( 'variables' => array('script' => ''), 'template' => 'twig-raw-test', diff --git a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml index 75b9bbb..77f1bf3 100644 --- a/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml +++ b/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.routing.yml @@ -18,3 +18,10 @@ twig_theme_test_url_generator: _content: '\Drupal\twig_theme_test\TwigThemeTestController::urlGeneratorRender' requirements: _access: 'TRUE' + +twig_theme_test.registry_loader: + path: '/twig-theme-test/registry-loader' + defaults: + _content: '\Drupal\twig_theme_test\TwigThemeTestController::registryLoaderRender' + requirements: + _access: 'TRUE' diff --git a/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_extend.html.twig b/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_extend.html.twig new file mode 100644 index 0000000..7d5cb0e --- /dev/null +++ b/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_extend.html.twig @@ -0,0 +1,5 @@ +This line is from test_theme_twig_registry_loader/templates/twig_registry_loader_test_extend.html.twig + +{% block content %} +This text is in a block. +{% endblock %} diff --git a/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_include.html.twig b/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_include.html.twig new file mode 100644 index 0000000..7097adf --- /dev/null +++ b/core/modules/system/tests/themes/test_theme_twig_registry_loader/templates/twig_registry_loader_test_include.html.twig @@ -0,0 +1 @@ +This line is from test_theme_twig_registry_loader/templates/twig_registry_loader_test_include.html.twig diff --git a/core/modules/system/tests/themes/test_theme_twig_registry_loader/test_theme_twig_registry_loader.info.yml b/core/modules/system/tests/themes/test_theme_twig_registry_loader/test_theme_twig_registry_loader.info.yml new file mode 100644 index 0000000..9ee01c5 --- /dev/null +++ b/core/modules/system/tests/themes/test_theme_twig_registry_loader/test_theme_twig_registry_loader.info.yml @@ -0,0 +1,5 @@ +name: 'Twig registry loader test' +type: theme +description: 'Support module for Twig registry loader testing.' +version: VERSION +core: 8.x