From 1dc4ba8533e5c311c6c032b2321a2722cbf0ed32 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Sun, 26 Jun 2016 10:50:41 +0200 Subject: [PATCH] Issue #2698141 by TravisCarden, ChuChuNaKu, effulgentsia: Empty Twig {% trans %} tag causes unhelpful fatal exception --- .../Drupal/Core/Template/TwigNodeTrans.php | 3 +++ .../system/src/Tests/Theme/TwigTransTest.php | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/core/lib/Drupal/Core/Template/TwigNodeTrans.php b/core/lib/Drupal/Core/Template/TwigNodeTrans.php index 98404b602fd4..21006fd1ed38 100644 --- a/core/lib/Drupal/Core/Template/TwigNodeTrans.php +++ b/core/lib/Drupal/Core/Template/TwigNodeTrans.php @@ -169,6 +169,9 @@ class TwigNodeTrans extends \Twig_Node { } } } + elseif (!$body->hasAttribute('data')) { + throw new \Twig_Error_Syntax('{% trans %} tag cannot be empty'); + } else { $text = $body->getAttribute('data'); } diff --git a/core/modules/system/src/Tests/Theme/TwigTransTest.php b/core/modules/system/src/Tests/Theme/TwigTransTest.php index 65d10a508ff6..6473d6e4fcbe 100644 --- a/core/modules/system/src/Tests/Theme/TwigTransTest.php +++ b/core/modules/system/src/Tests/Theme/TwigTransTest.php @@ -91,6 +91,30 @@ class TwigTransTest extends WebTestBase { $this->assertTwigTransTags(); } + /** + * Test empty Twig "trans" tags. + */ + public function testEmptyTwigTransTags() { + $elements = [ + '#type' => 'inline_template', + '#template' => '{% trans %}{% endtrans %}', + ]; + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = \Drupal::service('renderer'); + + try { + $renderer->renderPlain($elements); + + $this->fail('{% trans %}{% endtrans %} did not throw an exception.'); + } + catch (\Twig_Error_Syntax $e) { + $this->assertTrue(strstr($e->getMessage(), '{% trans %} tag cannot be empty'), '{% trans %}{% endtrans %} threw the expected exception.'); + } + catch (\Exception $e) { + $this->fail('{% trans %}{% endtrans %} threw an unexpected exception.'); + } + } + /** * Asserts Twig trans tags. */