From 0e6d717f2dabe50caa21ae284f212ba4ecfcd575 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sat, 27 Jul 2024 18:03:53 +0200 Subject: [PATCH] Fix optimizer mode validation in OptimizerNodeVisitor --- CHANGELOG | 1 + src/NodeVisitor/OptimizerNodeVisitor.php | 2 +- tests/NodeVisitor/OptimizerTest.php | 11 +++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 785a26949..39b049889 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ # 3.11.0 (2024-XX-XX) + * Fix optimizer mode validation in `OptimizerNodeVisitor` * Add the possibility to yield from a generator in `PrintNode` * Add the `shuffle` filter * Add the `singular` and `plural` filters in `StringExtension` diff --git a/src/NodeVisitor/OptimizerNodeVisitor.php b/src/NodeVisitor/OptimizerNodeVisitor.php index a2540f16a..325edab18 100644 --- a/src/NodeVisitor/OptimizerNodeVisitor.php +++ b/src/NodeVisitor/OptimizerNodeVisitor.php @@ -55,7 +55,7 @@ final class OptimizerNodeVisitor implements NodeVisitorInterface */ public function __construct(int $optimizers = -1) { - if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER)) { + if ($optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_TEXT_NODES)) { throw new \InvalidArgumentException(\sprintf('Optimizer mode "%s" is not valid.', $optimizers)); } diff --git a/tests/NodeVisitor/OptimizerTest.php b/tests/NodeVisitor/OptimizerTest.php index f0f61132b..b9eeea932 100644 --- a/tests/NodeVisitor/OptimizerTest.php +++ b/tests/NodeVisitor/OptimizerTest.php @@ -19,10 +19,21 @@ use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\ParentExpression; use Twig\Node\ForNode; use Twig\Node\Node; +use Twig\NodeVisitor\OptimizerNodeVisitor; use Twig\Source; class OptimizerTest extends TestCase { + public function testConstructor() + { + $this->expectNotToPerformAssertions(); + new OptimizerNodeVisitor( + OptimizerNodeVisitor::OPTIMIZE_FOR + | OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER + | OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES + ); + } + public function testRenderBlockOptimizer() { $env = new Environment(new ArrayLoader(), ['cache' => false, 'autoescape' => false]);