66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace LanguageServer\Tests; | ||
|  | require __DIR__ . '/vendor/autoload.php'; | ||
|  | 
 | ||
|  | use Exception; | ||
|  | use LanguageServer\Index\Index; | ||
|  | use LanguageServer\PhpDocument; | ||
|  | use LanguageServer\DefinitionResolver; | ||
|  | use Microsoft\PhpParser; | ||
|  | use phpDocumentor\Reflection\DocBlockFactory; | ||
|  | use RecursiveDirectoryIterator; | ||
|  | use RecursiveIteratorIterator; | ||
|  | 
 | ||
|  | $totalSize = 0; | ||
|  | 
 | ||
|  | $frameworks = ["drupal", "wordpress", "php-language-server", "tolerant-php-parser", "math-php", "symfony", "CodeIgniter", "cakephp"]; | ||
|  | 
 | ||
|  | foreach($frameworks as $framework) { | ||
|  |     $iterator = new RecursiveDirectoryIterator(__DIR__ . "/validation/frameworks/$framework"); | ||
|  |     $testProviderArray = array(); | ||
|  | 
 | ||
|  |     foreach (new RecursiveIteratorIterator($iterator) as $file) { | ||
|  |         if (strpos((string)$file, ".php") !== false) { | ||
|  |             $totalSize += $file->getSize(); | ||
|  |             $testProviderArray[] = $file->getPathname(); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     if (count($testProviderArray) === 0) { | ||
|  |         throw new Exception("ERROR: Validation testsuite frameworks not found - run `git submodule update --init --recursive` to download."); | ||
|  |     } | ||
|  | 
 | ||
|  |     $start = microtime(true); | ||
|  | 
 | ||
|  |     foreach ($testProviderArray as $idx => $testCaseFile) { | ||
|  |         if (filesize($testCaseFile) > 10000) { | ||
|  |             continue; | ||
|  |         } | ||
|  |         if ($idx % 1000 === 0) { | ||
|  |             echo "$idx\n"; | ||
|  |         } | ||
|  | 
 | ||
|  |         $fileContents = file_get_contents($testCaseFile); | ||
|  | 
 | ||
|  |         $docBlockFactory = DocBlockFactory::createInstance(); | ||
|  |         $index = new Index; | ||
|  |         $maxRecursion = []; | ||
|  |         $definitions = []; | ||
|  | 
 | ||
|  |         $definitionResolver = new DefinitionResolver($index); | ||
|  |         $parser = new PhpParser\Parser(); | ||
|  | 
 | ||
|  |         try { | ||
|  |             $document = new PhpDocument($testCaseFile, $fileContents, $index, $parser, $docBlockFactory, $definitionResolver); | ||
|  |         } catch (\Throwable $e) { | ||
|  |             continue; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     echo "------------------------------\n"; | ||
|  | 
 | ||
|  |     echo "Time [$framework]: " . (microtime(true) - $start) . PHP_EOL; | ||
|  | } | ||
|  | 
 |