120 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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 = array(
 | |
|             '.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 = array();
 | |
|             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 = array();
 | |
|         foreach ($files as $file) {
 | |
|             $f[] = realpath(__DIR__.\DIRECTORY_SEPARATOR.'..'.\DIRECTORY_SEPARATOR.'Fixtures'.\DIRECTORY_SEPARATOR.$file);
 | |
|         }
 | |
| 
 | |
|         return $f;
 | |
|     }
 | |
| }
 | 
