<commit_before><?php

/*
 * This file is part of Twig.
 *
 * (c) <NAME>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

class Twig_Tests_IntegrationTest extends PHPUnit_Framework_TestCase
{
    public function getTests()
    {
        $fixturesDir = realpath(dirname(__FILE__).'/Fixtures/');
        $tests = array();

        foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
            if (!preg_match('/\.test$/', $file)) {
                continue;
            }

            $test = file_get_contents($file->getRealpath());

            if (!preg_match('/--TEST--\s*(.*?)\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) {
                throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
            }

            $message = $match[1];
            $templates = array();
            preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $match[2], $matches, PREG_SET_ORDER);
            foreach ($matches as $match) {
                $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
            }

            $tests[] = array(str_replace($fixturesDir.'/', '', $file), $test, $message, $templates);
        }

        return $tests;
    }

    /**
     * @dataProvider getTests
     */
    public function testIntegration($file, $test, $message, $templates)
    {
        $loader = new Twig_Loader_Array($templates);
        $twig = new Twig_Environment($loader, array('cache' => false));
        $twig->addExtension(new Twig_Extension_Escaper());
        $twig->addExtension(new TestExtension());

        try {
            $template = $twig->loadTemplate('index.twig');
        } catch (Twig_Error_Syntax $e) {
            $e->setFilename($file);

            throw $e;
        } catch (Exception $e) {
            throw new Twig_Error($e->getMessage().' (in '.$file.')');
        }

        preg_match_all('/--DATA--(.*?)--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $matches, PREG_SET_ORDER);
        foreach ($matches as $match) {
            $output = trim($template->render(eval($match[1].';')), "\n ");
            $expected = trim($match[2], "\n ");

            if ($expected != $output)  {
                echo 'Compiled template that failed:';

                foreach (array_keys($templates) as $name)  {
                    echo "Template: $name\n";
                    $source = $loader->getSource($name);
                    echo $twig->compile($twig->parse($twig->tokenize($source, $name)));
                }
            }
            $this->assertEquals($expected, $output, $message.' (in '.$file.')');
        }
    }
}

function test_foo($value = 'foo')
{<commit_msg>Fixing use of non-existent method name.<commit_after><?php

/*
 * This file is part of Twig.
 *
 * (c) <NAME>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

class Twig_Tests_IntegrationTest extends PHPUnit_Framework_TestCase
{
    public function getTests()
    {
        $fixturesDir = realpath(dirname(__FILE__).'/Fixtures/');
        $tests = array();

        foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) {
            if (!preg_match('/\.test$/', $file)) {
                continue;
            }

            $test = file_get_contents($file->getRealpath());

            if (!preg_match('/--TEST--\s*(.*?)\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) {
                throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file)));
            }

            $message = $match[1];
            $templates = array();
            preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $match[2], $matches, PREG_SET_ORDER);
            foreach ($matches as $match) {
                $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2];
            }

            $tests[] = array(str_replace($fixturesDir.'/', '', $file), $test, $message, $templates);
        }

        return $tests;
    }

    /**
     * @dataProvider getTests
     */
    public function testIntegration($file, $test, $message, $templates)
    {
        $loader = new Twig_Loader_Array($templates);
        $twig = new Twig_Environment($loader, array('cache' => false));
        $twig->addExtension(new Twig_Extension_Escaper());
        $twig->addExtension(new TestExtension());

        try {
            $template = $twig->loadTemplate('index.twig');
        } catch (Twig_Error_Syntax $e) {
            $e->setTemplateFile($file);

            throw $e;
        } catch (Exception $e) {
            throw new Twig_Error($e->getMessage().' (in '.$file.')');
        }

        preg_match_all('/--DATA--(.*?)--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $matches, PREG_SET_ORDER);
        foreach ($matches as $match) {
            $output = trim($template->render(eval($match[1].';')), "\n ");
            $expected = trim($match[2], "\n ");

            if ($expected != $output)  {
                echo 'Compiled template that failed:';

                foreach (array_keys($templates) as $name)  {
                    echo "Template: $name\n";
                    $source = $loader->getSource($name);
                    echo $twig->compile($twig->parse($twig->tokenize($source, $name)));
                }
            }
            $this->assertEquals($expected, $output, $message.' (in '.$file.')');
        }
    }
}

function test_foo($value = 'foo')
{
{'fraction_non_alphanumeric': 0.19320521619766645, 'fraction_numerical': 0.0024021962937542897, 'mean_word_length': 2.1679347826086954, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2959471', 'n_tokens_mistral': 1799, 'n_tokens_neox': 1751, 'n_words': 341}