%PDF- %PDF-
Direktori : /home/silvzytp/dsr_code/vendor/phpunit/phpunit/src/TextUI/ |
Current File : /home/silvzytp/dsr_code/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php |
<?php declare(strict_types=1); /* * This file is part of PHPUnit. * * (c) Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\TextUI; use const PHP_VERSION; use function explode; use function in_array; use function is_dir; use function is_file; use function strpos; use function version_compare; use PHPUnit\Framework\Exception as FrameworkException; use PHPUnit\Framework\TestSuite as TestSuiteObject; use PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection; use SebastianBergmann\FileIterator\Facade; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class TestSuiteMapper { /** * @throws RuntimeException * @throws TestDirectoryNotFoundException * @throws TestFileNotFoundException */ public function map(TestSuiteCollection $configuration, string $filter): TestSuiteObject { try { $filterAsArray = $filter ? explode(',', $filter) : []; $result = new TestSuiteObject; foreach ($configuration as $testSuiteConfiguration) { if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) { continue; } $testSuite = new TestSuiteObject($testSuiteConfiguration->name()); $testSuiteEmpty = true; $exclude = []; foreach ($testSuiteConfiguration->exclude()->asArray() as $file) { $exclude[] = $file->path(); } foreach ($testSuiteConfiguration->directories() as $directory) { if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()->asString())) { continue; } $files = (new Facade)->getFilesAsArray( $directory->path(), $directory->suffix(), $directory->prefix(), $exclude ); if (!empty($files)) { $testSuite->addTestFiles($files); $testSuiteEmpty = false; } elseif (strpos($directory->path(), '*') === false && !is_dir($directory->path())) { throw new TestDirectoryNotFoundException($directory->path()); } } foreach ($testSuiteConfiguration->files() as $file) { if (!is_file($file->path())) { throw new TestFileNotFoundException($file->path()); } if (!version_compare(PHP_VERSION, $file->phpVersion(), $file->phpVersionOperator()->asString())) { continue; } $testSuite->addTestFile($file->path()); $testSuiteEmpty = false; } if (!$testSuiteEmpty) { $result->addTest($testSuite); } } return $result; } catch (FrameworkException $e) { throw new RuntimeException( $e->getMessage(), $e->getCode(), $e ); } } }