assertEquals($expr, $node->getNode('expr')); } #[Group('legacy')] public function testTriggeredMessage(): void { $environment = new Environment(new ArrayLoader([ '100%.twig' => "{% deprecated 0 %}\n{% deprecated 4 %}\n{% deprecated 'The %s template' ~ name package='foo/bar' version='1.1' %}", ])); $deprecations = []; set_error_handler(static function (int $type, string $message) use (&$deprecations): bool { if (\E_USER_DEPRECATED === $type) { $deprecations[] = $message; return true; } return false; }); try { $environment->render('100%.twig', ['name' => '%d']); } finally { restore_error_handler(); } $this->assertSame([ '0 in "100%.twig" at line 1.', '4 in "100%.twig" at line 2.', 'Since foo/bar 1.1: The %s template%d in "100%.twig" at line 3.', ], $deprecations); } public static function provideTests(): iterable { $tests = []; $expr = new ConstantExpression('This section is deprecated', 1); $node = new DeprecatedNode($expr, 1); $node->setSourceContext(new Source('', 'foo.twig')); $node->setNode('package', new ConstantExpression('twig/twig', 1)); $node->setNode('version', new ConstantExpression('1.1', 1)); $tests[] = [$node, <<setSourceContext(new Source('', 'foo.twig')); $dep->setNode('package', new ConstantExpression('twig/twig', 1)); $dep->setNode('version', new ConstantExpression('1.1', 1)); $tests[] = [$node, <<addFunction($function = new TwigFunction('foo', 'Twig\Tests\Node\foo', [])); $expr = new FunctionExpression($function, new EmptyNode(), 1); $node = new DeprecatedNode($expr, 1); $node->setSourceContext(new Source('', 'foo.twig')); $node->setNode('package', new ConstantExpression('twig/twig', 1)); $node->setNode('version', new ConstantExpression('1.1', 1)); $tests[] = [$node, <<setSourceContext(new Source('', '100%.twig')); $tests[] = [$node, <<