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

Breadcrumb

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

function TestSuiteMapper::map

@psalm-param non-empty-string $xmlConfigurationFile,

Throws

RuntimeException

TestDirectoryNotFoundException

TestFileNotFoundException

File

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

Class

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

Namespace

PHPUnit\TextUI\XmlConfiguration

Code

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);
    }
}

API Navigation

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