summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Test
diff options
context:
space:
mode:
authorAppleman1234 <applemansigloo@gmail.com>2022-09-25 13:22:40 +1000
committerAppleman1234 <applemansigloo@gmail.com>2022-09-25 13:22:40 +1000
commit92561d7f36508b7e0271926e417adf0e2e53916b (patch)
treea8588b4f70af276c5acf58836e33b1f6ff5c61e8 /inc/lib/Twig/Test
parent6f1083e4b51fc9c4c594f6c72cf3d84ef4d0298b (diff)
Initial attempt a switch to composer and PHP-8.1 compatibility
Diffstat (limited to 'inc/lib/Twig/Test')
-rw-r--r--inc/lib/Twig/Test/Function.php38
-rw-r--r--inc/lib/Twig/Test/IntegrationTestCase.php249
-rw-r--r--inc/lib/Twig/Test/Method.php40
-rw-r--r--inc/lib/Twig/Test/Node.php40
-rw-r--r--inc/lib/Twig/Test/NodeTestCase.php75
5 files changed, 0 insertions, 442 deletions
diff --git a/inc/lib/Twig/Test/Function.php b/inc/lib/Twig/Test/Function.php
deleted file mode 100644
index 9e83c3f8..00000000
--- a/inc/lib/Twig/Test/Function.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a function template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Function extends Twig_Test
-{
- protected $function;
-
- public function __construct($function, array $options = array())
- {
- $options['callable'] = $function;
-
- parent::__construct($options);
-
- $this->function = $function;
- }
-
- public function compile()
- {
- return $this->function;
- }
-}
diff --git a/inc/lib/Twig/Test/IntegrationTestCase.php b/inc/lib/Twig/Test/IntegrationTestCase.php
deleted file mode 100644
index 016951aa..00000000
--- a/inc/lib/Twig/Test/IntegrationTestCase.php
+++ /dev/null
@@ -1,249 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use PHPUnit\Framework\TestCase;
-
-/**
- * Integration test helper.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Karma Dordrak <drak@zikula.org>
- */
-abstract class Twig_Test_IntegrationTestCase extends TestCase
-{
- /**
- * @return string
- */
- abstract protected function getFixturesDir();
-
- /**
- * @return Twig_RuntimeLoaderInterface[]
- */
- protected function getRuntimeLoaders()
- {
- return array();
- }
-
- /**
- * @return Twig_ExtensionInterface[]
- */
- protected function getExtensions()
- {
- return array();
- }
-
- /**
- * @return Twig_SimpleFilter[]
- */
- protected function getTwigFilters()
- {
- return array();
- }
-
- /**
- * @return Twig_SimpleFunction[]
- */
- protected function getTwigFunctions()
- {
- return array();
- }
-
- /**
- * @return Twig_SimpleTest[]
- */
- protected function getTwigTests()
- {
- return array();
- }
-
- /**
- * @dataProvider getTests
- */
- public function testIntegration($file, $message, $condition, $templates, $exception, $outputs)
- {
- $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
- }
-
- /**
- * @dataProvider getLegacyTests
- * @group legacy
- */
- public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs)
- {
- $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs);
- }
-
- public function getTests($name, $legacyTests = false)
- {
- $fixturesDir = realpath($this->getFixturesDir());
- $tests = array();
-
- foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
- if (!preg_match('/\.test$/', $file)) {
- continue;
- }
-
- if ($legacyTests xor false !== strpos($file->getRealpath(), '.legacy.test')) {
- continue;
- }
-
- $test = file_get_contents($file->getRealpath());
-
- if (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) {
- $message = $match[1];
- $condition = $match[2];
- $templates = self::parseTemplates($match[3]);
- $exception = $match[5];
- $outputs = array(array(null, $match[4], null, ''));
- } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) {
- $message = $match[1];
- $condition = $match[2];
- $templates = self::parseTemplates($match[3]);
- $exception = false;
- preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER);
- } else {
- throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
- }
-
- $tests[] = array(str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs);
- }
-
- if ($legacyTests && empty($tests)) {
- // add a dummy test to avoid a PHPUnit message
- return array(array('not', '-', '', array(), '', array()));
- }
-
- return $tests;
- }
-
- public function getLegacyTests()
- {
- return $this->getTests('testLegacyIntegration', true);
- }
-
- protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs)
- {
- if (!$outputs) {
- $this->markTestSkipped('no legacy tests to run');
- }
-
- if ($condition) {
- eval('$ret = '.$condition.';');
- if (!$ret) {
- $this->markTestSkipped($condition);
- }
- }
-
- $loader = new Twig_Loader_Array($templates);
-
- foreach ($outputs as $i => $match) {
- $config = array_merge(array(
- 'cache' => false,
- 'strict_variables' => true,
- ), $match[2] ? eval($match[2].';') : array());
- $twig = new Twig_Environment($loader, $config);
- $twig->addGlobal('global', 'global');
- foreach ($this->getRuntimeLoaders() as $runtimeLoader) {
- $twig->addRuntimeLoader($runtimeLoader);
- }
-
- foreach ($this->getExtensions() as $extension) {
- $twig->addExtension($extension);
- }
-
- foreach ($this->getTwigFilters() as $filter) {
- $twig->addFilter($filter);
- }
-
- foreach ($this->getTwigTests() as $test) {
- $twig->addTest($test);
- }
-
- foreach ($this->getTwigFunctions() as $function) {
- $twig->addFunction($function);
- }
-
- // avoid using the same PHP class name for different cases
- // only for PHP 5.2+
- if (PHP_VERSION_ID >= 50300) {
- $p = new ReflectionProperty($twig, 'templateClassPrefix');
- $p->setAccessible(true);
- $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_');
- }
-
- try {
- $template = $twig->loadTemplate('index.twig');
- } catch (Exception $e) {
- if (false !== $exception) {
- $message = $e->getMessage();
- $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $message)));
- $last = substr($message, strlen($message) - 1);
- $this->assertTrue('.' === $last || '?' === $last, $message, 'Exception message must end with a dot or a question mark.');
-
- return;
- }
-
- throw new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e);
- }
-
- try {
- $output = trim($template->render(eval($match[1].';')), "\n ");
- } catch (Exception $e) {
- if (false !== $exception) {
- $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $e->getMessage())));
-
- return;
- }
-
- $e = new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e);
-
- $output = trim(sprintf('%s: %s', get_class($e), $e->getMessage()));
- }
-
- if (false !== $exception) {
- list($class) = explode(':', $exception);
- $constraintClass = class_exists('PHPUnit\Framework\Constraint\Exception') ? 'PHPUnit\Framework\Constraint\Exception' : 'PHPUnit_Framework_Constraint_Exception';
- $this->assertThat(null, new $constraintClass($class));
- }
-
- $expected = trim($match[3], "\n ");
-
- if ($expected !== $output) {
- printf("Compiled templates that failed on case %d:\n", $i + 1);
-
- foreach (array_keys($templates) as $name) {
- echo "Template: $name\n";
- $loader = $twig->getLoader();
- if (!$loader instanceof Twig_SourceContextLoaderInterface) {
- $source = new Twig_Source($loader->getSource($name), $name);
- } else {
- $source = $loader->getSourceContext($name);
- }
- echo $twig->compile($twig->parse($twig->tokenize($source)));
- }
- }
- $this->assertEquals($expected, $output, $message.' (in '.$file.')');
- }
- }
-
- protected static function parseTemplates($test)
- {
- $templates = array();
- preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
- }
-
- return $templates;
- }
-}
-
-class_alias('Twig_Test_IntegrationTestCase', 'Twig\Test\IntegrationTestCase', false);
diff --git a/inc/lib/Twig/Test/Method.php b/inc/lib/Twig/Test/Method.php
deleted file mode 100644
index feccd5db..00000000
--- a/inc/lib/Twig/Test/Method.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Method class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleTest instead.', E_USER_DEPRECATED);
-
-/**
- * Represents a method template test.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Method extends Twig_Test
-{
- protected $extension;
- protected $method;
-
- public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
- {
- $options['callable'] = array($extension, $method);
-
- parent::__construct($options);
-
- $this->extension = $extension;
- $this->method = $method;
- }
-
- public function compile()
- {
- return sprintf('$this->env->getExtension(\'%s\')->%s', get_class($this->extension), $this->method);
- }
-}
diff --git a/inc/lib/Twig/Test/Node.php b/inc/lib/Twig/Test/Node.php
deleted file mode 100644
index 6098a527..00000000
--- a/inc/lib/Twig/Test/Node.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-@trigger_error('The Twig_Test_Node class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED);
-
-/**
- * Represents a template test as a Node.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since 1.12 (to be removed in 2.0)
- */
-class Twig_Test_Node extends Twig_Test
-{
- protected $class;
-
- public function __construct($class, array $options = array())
- {
- parent::__construct($options);
-
- $this->class = $class;
- }
-
- public function getClass()
- {
- return $this->class;
- }
-
- public function compile()
- {
- }
-}
diff --git a/inc/lib/Twig/Test/NodeTestCase.php b/inc/lib/Twig/Test/NodeTestCase.php
deleted file mode 100644
index 47942675..00000000
--- a/inc/lib/Twig/Test/NodeTestCase.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-use PHPUnit\Framework\TestCase;
-
-abstract class Twig_Test_NodeTestCase extends TestCase
-{
- abstract public function getTests();
-
- /**
- * @dataProvider getTests
- */
- public function testCompile($node, $source, $environment = null, $isPattern = false)
- {
- $this->assertNodeCompilation($source, $node, $environment, $isPattern);
- }
-
- public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null, $isPattern = false)
- {
- $compiler = $this->getCompiler($environment);
- $compiler->compile($node);
-
- if ($isPattern) {
- $this->assertStringMatchesFormat($source, trim($compiler->getSource()));
- } else {
- $this->assertEquals($source, trim($compiler->getSource()));
- }
- }
-
- protected function getCompiler(Twig_Environment $environment = null)
- {
- return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment);
- }
-
- protected function getEnvironment()
- {
- return new Twig_Environment(new Twig_Loader_Array(array()));
- }
-
- protected function getVariableGetter($name, $line = false)
- {
- $line = $line > 0 ? "// line {$line}\n" : '';
-
- if (PHP_VERSION_ID >= 70000) {
- return sprintf('%s($context["%s"] ?? null)', $line, $name, $name);
- }
-
- if (PHP_VERSION_ID >= 50400) {
- return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name);
- }
-
- return sprintf('%s$this->getContext($context, "%s")', $line, $name);
- }
-
- protected function getAttributeGetter()
- {
- if (function_exists('twig_template_get_attributes')) {
- return 'twig_template_get_attributes($this, ';
- }
-
- return '$this->getAttribute(';
- }
-}
-
-class_alias('Twig_Test_NodeTestCase', 'Twig\Test\NodeTestCase', false);
-class_exists('Twig_Environment');
-class_exists('Twig_Node');