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;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |