Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/php-static-scanner-instrumentalization.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php')
-rw-r--r--vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php b/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
new file mode 100644
index 0000000..369ee41
--- /dev/null
+++ b/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace PhpParser;
+
+abstract class CodeTestAbstract extends \PHPUnit_Framework_TestCase
+{
+ protected function getTests($directory, $fileExtension) {
+ $directory = realpath($directory);
+ $it = new \RecursiveDirectoryIterator($directory);
+ $it = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::LEAVES_ONLY);
+ $it = new \RegexIterator($it, '(\.' . preg_quote($fileExtension) . '$)');
+
+ $tests = array();
+ foreach ($it as $file) {
+ $fileName = $file->getPathname();
+ $fileContents = file_get_contents($fileName);
+ $fileContents = canonicalize($fileContents);
+
+ // evaluate @@{expr}@@ expressions
+ $fileContents = preg_replace_callback(
+ '/@@\{(.*?)\}@@/',
+ function($matches) {
+ return eval('return ' . $matches[1] . ';');
+ },
+ $fileContents
+ );
+
+ // parse sections
+ $parts = preg_split("/\n-----(?:\n|$)/", $fileContents);
+
+ // first part is the name
+ $name = array_shift($parts) . ' (' . $fileName . ')';
+ $shortName = ltrim(str_replace($directory, '', $fileName), '/\\');
+
+ // multiple sections possible with always two forming a pair
+ $chunks = array_chunk($parts, 2);
+ foreach ($chunks as $i => $chunk) {
+ $dataSetName = $shortName . (count($chunks) > 1 ? '#' . $i : '');
+ list($expected, $mode) = $this->extractMode($chunk[1]);
+ $tests[$dataSetName] = array($name, $chunk[0], $expected, $mode);
+ }
+ }
+
+ return $tests;
+ }
+
+ private function extractMode($expected) {
+ $firstNewLine = strpos($expected, "\n");
+ if (false === $firstNewLine) {
+ $firstNewLine = strlen($expected);
+ }
+
+ $firstLine = substr($expected, 0, $firstNewLine);
+ if (0 !== strpos($firstLine, '!!')) {
+ return [$expected, null];
+ }
+
+ $expected = (string) substr($expected, $firstNewLine + 1);
+ return [$expected, substr($firstLine, 2)];
+ }
+}