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

Breadcrumb

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

class TestSuiteBuilder

Same name in this branch
  1. 11.1.x vendor/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteBuilder.php \PHPUnit\Event\TestSuite\TestSuiteBuilder

@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\Configuration\TestSuiteBuilder

Expanded class hierarchy of TestSuiteBuilder

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

File

vendor/phpunit/phpunit/src/TextUI/Configuration/TestSuiteBuilder.php, line 34

Namespace

PHPUnit\TextUI\Configuration
View source
final class TestSuiteBuilder {
    
    /**
     * @throws \PHPUnit\Framework\Exception
     * @throws RuntimeException
     * @throws TestDirectoryNotFoundException
     * @throws TestFileNotFoundException
     */
    public function build(Configuration $configuration) : TestSuite {
        if ($configuration->hasCliArguments()) {
            $arguments = [];
            foreach ($configuration->cliArguments() as $cliArgument) {
                $argument = realpath($cliArgument);
                if (!$argument) {
                    throw new TestFileNotFoundException($cliArgument);
                }
                $arguments[] = $argument;
            }
            if (count($arguments) === 1) {
                $testSuite = $this->testSuiteFromPath($arguments[0], $configuration->testSuffixes());
            }
            else {
                $testSuite = $this->testSuiteFromPathList($arguments, $configuration->testSuffixes());
            }
        }
        if (!isset($testSuite)) {
            $xmlConfigurationFile = $configuration->hasConfigurationFile() ? $configuration->configurationFile() : 'Root Test Suite';
            assert(!empty($xmlConfigurationFile));
            $testSuite = (new TestSuiteMapper())->map($xmlConfigurationFile, $configuration->testSuite(), $configuration->includeTestSuite(), $configuration->excludeTestSuite());
        }
        EventFacade::emitter()->testSuiteLoaded(\PHPUnit\Event\TestSuite\TestSuiteBuilder::from($testSuite));
        return $testSuite;
    }
    
    /**
     * @psalm-param non-empty-string $path
     * @psalm-param list<non-empty-string> $suffixes
     * @psalm-param ?TestSuite $suite
     *
     * @throws \PHPUnit\Framework\Exception
     */
    private function testSuiteFromPath(string $path, array $suffixes, ?TestSuite $suite = null) : TestSuite {
        if (str_ends_with($path, '.phpt') && is_file($path)) {
            $suite = $suite ?: TestSuite::empty($path);
            $suite->addTestFile($path);
            return $suite;
        }
        if (is_dir($path)) {
            $files = (new FileIteratorFacade())->getFilesAsArray($path, $suffixes);
            $suite = $suite ?: TestSuite::empty('CLI Arguments');
            $suite->addTestFiles($files);
            return $suite;
        }
        try {
            $testClass = (new TestSuiteLoader())->load($path);
        } catch (Exception $e) {
            print $e->getMessage() . PHP_EOL;
            exit(1);
        }
        if (!$suite) {
            return TestSuite::fromClassReflector($testClass);
        }
        $suite->addTestSuite($testClass);
        return $suite;
    }
    
    /**
     * @psalm-param list<non-empty-string> $paths
     * @psalm-param list<non-empty-string> $suffixes
     *
     * @throws \PHPUnit\Framework\Exception
     */
    private function testSuiteFromPathList(array $paths, array $suffixes) : TestSuite {
        $suite = TestSuite::empty('CLI Arguments');
        foreach ($paths as $path) {
            $this->testSuiteFromPath($path, $suffixes, $suite);
        }
        return $suite;
    }

}

Members

Title Sort descending Modifiers Object type Summary
TestSuiteBuilder::build public function
TestSuiteBuilder::testSuiteFromPath private function @psalm-param non-empty-string $path
@psalm-param list&lt;non-empty-string&gt; $suffixes
@psalm-param ?TestSuite $suite
TestSuiteBuilder::testSuiteFromPathList private function @psalm-param list&lt;non-empty-string&gt; $paths
@psalm-param list&lt;non-empty-string&gt; $suffixes

API Navigation

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