| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\Finder\Tests\Iterator;abstract class RealIteratorTestCase extends IteratorTestCase{    protected static $tmpDir;    protected static $files;    public static function setUpBeforeClass()    {        self::$tmpDir = realpath(sys_get_temp_dir()).\DIRECTORY_SEPARATOR.'symfony_finder';        self::$files = [            '.git/',            '.foo/',            '.foo/.bar',            '.foo/bar',            '.bar',            'test.py',            'foo/',            'foo/bar.tmp',            'test.php',            'toto/',            'toto/.git/',            'foo bar',        ];        self::$files = self::toAbsolute(self::$files);        if (is_dir(self::$tmpDir)) {            self::tearDownAfterClass();        } else {            mkdir(self::$tmpDir);        }        foreach (self::$files as $file) {            if (\DIRECTORY_SEPARATOR === $file[\strlen($file) - 1]) {                mkdir($file);            } else {                touch($file);            }        }        file_put_contents(self::toAbsolute('test.php'), str_repeat(' ', 800));        file_put_contents(self::toAbsolute('test.py'), str_repeat(' ', 2000));        touch(self::toAbsolute('foo/bar.tmp'), strtotime('2005-10-15'));        touch(self::toAbsolute('test.php'), strtotime('2005-10-15'));    }    public static function tearDownAfterClass()    {        $paths = new \RecursiveIteratorIterator(             new \RecursiveDirectoryIterator(self::$tmpDir, \RecursiveDirectoryIterator::SKIP_DOTS),             \RecursiveIteratorIterator::CHILD_FIRST         );        foreach ($paths as $path) {            if ($path->isDir()) {                if ($path->isLink()) {                    @unlink($path);                } else {                    @rmdir($path);                }            } else {                @unlink($path);            }        }    }    protected static function toAbsolute($files = null)    {        /*         * Without the call to setUpBeforeClass() property can be null.         */        if (!self::$tmpDir) {            self::$tmpDir = realpath(sys_get_temp_dir()).\DIRECTORY_SEPARATOR.'symfony_finder';        }        if (\is_array($files)) {            $f = [];            foreach ($files as $file) {                if (\is_array($file)) {                    $f[] = self::toAbsolute($file);                } else {                    $f[] = self::$tmpDir.\DIRECTORY_SEPARATOR.str_replace('/', \DIRECTORY_SEPARATOR, $file);                }            }            return $f;        }        if (\is_string($files)) {            return self::$tmpDir.\DIRECTORY_SEPARATOR.str_replace('/', \DIRECTORY_SEPARATOR, $files);        }        return self::$tmpDir;    }    protected static function toAbsoluteFixtures($files)    {        $f = [];        foreach ($files as $file) {            $f[] = realpath(__DIR__.\DIRECTORY_SEPARATOR.'..'.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR.$file);        }        return $f;    }}
 |