function TestDiscovery::registerTestNamespaces

Same name in other branches
  1. 8.9.x core/lib/Drupal/Core/Test/TestDiscovery.php \Drupal\Core\Test\TestDiscovery::registerTestNamespaces()
  2. 10 core/lib/Drupal/Core/Test/TestDiscovery.php \Drupal\Core\Test\TestDiscovery::registerTestNamespaces()
  3. 11.x core/lib/Drupal/Core/Test/TestDiscovery.php \Drupal\Core\Test\TestDiscovery::registerTestNamespaces()

Registers test namespaces of all extensions and core test classes.

Return value

array An associative array whose keys are PSR-4 namespace prefixes and whose values are directory names.

1 call to TestDiscovery::registerTestNamespaces()
TestDiscovery::findAllClassFiles in core/lib/Drupal/Core/Test/TestDiscovery.php
Discovers all class files in all available extensions.

File

core/lib/Drupal/Core/Test/TestDiscovery.php, line 75

Class

TestDiscovery
Discovers available tests.

Namespace

Drupal\Core\Test

Code

public function registerTestNamespaces() {
    if (isset($this->testNamespaces)) {
        return $this->testNamespaces;
    }
    $this->testNamespaces = [];
    $existing = $this->classLoader
        ->getPrefixesPsr4();
    // Add PHPUnit test namespaces of Drupal core.
    $this->testNamespaces['Drupal\\Tests\\'] = [
        $this->root . '/core/tests/Drupal/Tests',
    ];
    $this->testNamespaces['Drupal\\BuildTests\\'] = [
        $this->root . '/core/tests/Drupal/BuildTests',
    ];
    $this->testNamespaces['Drupal\\KernelTests\\'] = [
        $this->root . '/core/tests/Drupal/KernelTests',
    ];
    $this->testNamespaces['Drupal\\FunctionalTests\\'] = [
        $this->root . '/core/tests/Drupal/FunctionalTests',
    ];
    $this->testNamespaces['Drupal\\FunctionalJavascriptTests\\'] = [
        $this->root . '/core/tests/Drupal/FunctionalJavascriptTests',
    ];
    $this->testNamespaces['Drupal\\TestTools\\'] = [
        $this->root . '/core/tests/Drupal/TestTools',
    ];
    $this->availableExtensions = [];
    foreach ($this->getExtensions() as $name => $extension) {
        $this->availableExtensions[$extension->getType()][$name] = $name;
        $base_path = $this->root . '/' . $extension->getPath();
        // Add namespace of disabled/uninstalled extensions.
        if (!isset($existing["Drupal\\{$name}\\"])) {
            $this->classLoader
                ->addPsr4("Drupal\\{$name}\\", "{$base_path}/src");
        }
        // Add Simpletest test namespace.
        $this->testNamespaces["Drupal\\{$name}\\Tests\\"][] = "{$base_path}/src/Tests";
        // Add PHPUnit test namespaces.
        $this->testNamespaces["Drupal\\Tests\\{$name}\\Unit\\"][] = "{$base_path}/tests/src/Unit";
        $this->testNamespaces["Drupal\\Tests\\{$name}\\Kernel\\"][] = "{$base_path}/tests/src/Kernel";
        $this->testNamespaces["Drupal\\Tests\\{$name}\\Functional\\"][] = "{$base_path}/tests/src/Functional";
        $this->testNamespaces["Drupal\\Tests\\{$name}\\Build\\"][] = "{$base_path}/tests/src/Build";
        $this->testNamespaces["Drupal\\Tests\\{$name}\\FunctionalJavascript\\"][] = "{$base_path}/tests/src/FunctionalJavascript";
        // Add discovery for traits which are shared between different test
        // suites.
        $this->testNamespaces["Drupal\\Tests\\{$name}\\Traits\\"][] = "{$base_path}/tests/src/Traits";
    }
    foreach ($this->testNamespaces as $prefix => $paths) {
        $this->classLoader
            ->addPsr4($prefix, $paths);
    }
    $loader = (require __DIR__ . '/../../../../../autoload.php');
    // Ensure we have a valid TestCase class.
    ClassWriter::mutateTestBase($loader);
    return $this->testNamespaces;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.