Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. TestSuiteMapper.php

class TestSuiteMapper

@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit

@internal This class is not covered by the backward compatibility promise for PHPUnit

Hierarchy

  • class \PHPUnit\TextUI\XmlConfiguration\TestSuiteMapper

Expanded class hierarchy of TestSuiteMapper

1 file declares its use of TestSuiteMapper
TestSuiteBuilder.php in vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php

File

vendor/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php, line 34

Namespace

PHPUnit\TextUI\XmlConfiguration
View source
final class TestSuiteMapper {
    
    /**
     * @psalm-param non-empty-string $xmlConfigurationFile,
     *
     * @throws RuntimeException
     * @throws TestDirectoryNotFoundException
     * @throws TestFileNotFoundException
     */
    public function map(string $xmlConfigurationFile, TestSuiteCollection $configuration, string $filter, string $excludedTestSuites) : TestSuiteObject {
        try {
            $filterAsArray = $filter ? explode(',', $filter) : [];
            $excludedFilterAsArray = $excludedTestSuites ? explode(',', $excludedTestSuites) : [];
            $result = TestSuiteObject::empty($xmlConfigurationFile);
            foreach ($configuration as $testSuiteConfiguration) {
                if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) {
                    continue;
                }
                if (!empty($excludedFilterAsArray) && in_array($testSuiteConfiguration->name(), $excludedFilterAsArray, true)) {
                    continue;
                }
                $exclude = [];
                foreach ($testSuiteConfiguration->exclude()
                    ->asArray() as $file) {
                    $exclude[] = $file->path();
                }
                $files = [];
                foreach ($testSuiteConfiguration->directories() as $directory) {
                    if (!str_contains($directory->path(), '*') && !is_dir($directory->path())) {
                        throw new TestDirectoryNotFoundException($directory->path());
                    }
                    if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()
                        ->asString())) {
                        continue;
                    }
                    $files = array_merge($files, (new Facade())->getFilesAsArray($directory->path(), $directory->suffix(), $directory->prefix(), $exclude));
                }
                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;
                    }
                    $files[] = $file->path();
                }
                if (!empty($files)) {
                    $testSuite = TestSuiteObject::empty($testSuiteConfiguration->name());
                    $testSuite->addTestFiles(array_unique($files));
                    $result->addTest($testSuite);
                }
            }
            return $result;
        } catch (FrameworkException $e) {
            throw new RuntimeException($e->getMessage(), $e->getCode(), $e);
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary
TestSuiteMapper::map public function @psalm-param non-empty-string $xmlConfigurationFile,

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal