TestFileParser.php in Drupal 8
File
core/lib/Drupal/Core/Test/RunTests/TestFileParser.php
View source
<?php
namespace Drupal\Core\Test\RunTests;
use Drupal\simpletest\TestBase;
use PHPUnit\Framework\TestCase;
class TestFileParser {
public function getTestListFromFile($file) {
$test_list = $this
->parseContents(file_get_contents($file));
return array_filter($test_list, function ($class) {
return is_subclass_of($class, TestCase::class) || is_subclass_of($class, TestBase::class);
});
}
protected function parseContents($contents) {
$namespace = FALSE;
if (preg_match('@^\\s*namespace ([^ ;]+)@m', $contents, $matches)) {
$namespace = $matches[1];
}
$test_list = [];
preg_match_all('@^\\s*(?!abstract\\s+)(?:final\\s+|\\s*)class ([^ ]+)@m', $contents, $matches);
if (!$namespace) {
$test_list = $matches[1];
}
else {
foreach ($matches[1] as $class_name) {
$namespace_class = $namespace . '\\' . $class_name;
$test_list[] = $namespace_class;
}
}
return $test_list;
}
}