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