diff --git a/core/modules/system/src/Tests/Theme/TwigExtensionTest.php b/core/modules/system/src/Tests/Theme/TwigExtensionTest.php index 4be1f736c9..4e93eb9251 100644 --- a/core/modules/system/src/Tests/Theme/TwigExtensionTest.php +++ b/core/modules/system/src/Tests/Theme/TwigExtensionTest.php @@ -3,6 +3,7 @@ namespace Drupal\system\Tests\Theme; use Drupal\simpletest\WebTestBase; +use Drupal\Component\Render\FormattableMarkup; /** * Tests Twig extensions. @@ -86,4 +87,14 @@ public function testsRenderZeroValue() { $this->assertIdentical($extension->renderVar(0.0), 0, 'TwigExtension::renderVar() renders zero correctly when provided as a double.'); } + /** + * Tests output of MarkupInterface of TwigExtension->renderVar(). + */ + public function testRenderMarkup() { + /** @var \Drupal\Core\Template\TwigExtension $extension */ + $extension = \Drupal::service('twig.extension'); + $markup = new FormattableMarkup('This is a @markup', ['@markup' => 'MarkupInterface']); + $this->assertIdentical($extension->renderVar($markup), 'This is a MarkupInterface', 'TwigExtension::renderVar() returns MarkupInterface correctly.'); + } + } diff --git a/core/modules/system/src/Tests/Theme/TwigTransTest.php b/core/modules/system/src/Tests/Theme/TwigTransTest.php index ef6fe05074..4b3be4f84b 100644 --- a/core/modules/system/src/Tests/Theme/TwigTransTest.php +++ b/core/modules/system/src/Tests/Theme/TwigTransTest.php @@ -116,6 +116,14 @@ public function testEmptyTwigTransTags() { } /** + * Testing trans with render array value. + */ + public function testTransRenderArray() { + $this->drupalGet('twig-theme-test/render-array'); + $this->assertText('This is a trans render array', '{% trans %} with render array value is working correctly.'); + } + + /** * Asserts Twig trans tags. */ protected function assertTwigTransTags() { 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 7408ce8f47..4e5bf448c5 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 @@ -104,4 +104,13 @@ public function renderable() { ]; } + /** + * Controller for testing trans with render array value. + */ + public function transRenderArray() { + return [ + '#theme' => 'twig_theme_test_trans_render_array', + ]; + } + } diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.trans_render_array.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.trans_render_array.html.twig new file mode 100644 index 0000000000..ea04c5d477 --- /dev/null +++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.trans_render_array.html.twig @@ -0,0 +1,3 @@ +{% trans %} + This is a {{ var }}. +{% endtrans %} 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 b3a75e5180..169f0d4c98 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 @@ -24,6 +24,16 @@ function twig_theme_test_theme($existing, $type, $theme, $path) { 'variables' => array('var' => ''), 'template' => 'twig_theme_test.placeholder_outside_trans', ); + $items['twig_theme_test_trans_render_array'] = array( + 'variables' => array( + 'var' => array( + '#prefix' => '', + '#markup' => 'trans render array', + '#suffix' => '', + ), + ), + 'template' => 'twig_theme_test.trans_render_array', + ); $items['twig_namespace_test'] = array( 'variables' => array(), 'template' => 'twig_namespace_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 df665c3464..8bc66848aa 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 @@ -69,3 +69,10 @@ twig_theme_test_renderable: _controller: '\Drupal\twig_theme_test\TwigThemeTestController::renderable' requirements: _access: 'TRUE' + +twig_theme_test_render_array: + path: '/twig-theme-test/render-array' + defaults: + _controller: '\Drupal\twig_theme_test\TwigThemeTestController::transRenderArray' + requirements: + _access: 'TRUE'