Laravel version update
Laravel version update
This commit is contained in:
@@ -1,61 +1,30 @@
|
||||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace PhpParser;
|
||||
|
||||
abstract class CodeTestAbstract extends \PHPUnit_Framework_TestCase
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
require_once __DIR__ . '/CodeTestParser.php';
|
||||
|
||||
abstract class CodeTestAbstract extends 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);
|
||||
protected function getTests($directory, $fileExtension, $chunksPerTest = 2) {
|
||||
$parser = new CodeTestParser;
|
||||
$allTests = [];
|
||||
foreach (filesInDir($directory, $fileExtension) as $fileName => $fileContents) {
|
||||
list($name, $tests) = $parser->parseTest($fileContents, $chunksPerTest);
|
||||
|
||||
// first part is the name
|
||||
$name = array_shift($parts) . ' (' . $fileName . ')';
|
||||
$name .= ' (' . $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);
|
||||
foreach ($tests as $i => list($mode, $parts)) {
|
||||
$dataSetName = $shortName . (count($parts) > 1 ? '#' . $i : '');
|
||||
$allTests[$dataSetName] = array_merge([$name], $parts, [$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)];
|
||||
return $allTests;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user