You are here

function drupal_phpunit_get_extension_namespaces in Drupal 10

Same name and namespace in other branches
  1. 8 core/tests/bootstrap.php \drupal_phpunit_get_extension_namespaces()
  2. 9 core/tests/bootstrap.php \drupal_phpunit_get_extension_namespaces()

Registers the namespace for each extension directory with the autoloader.

Parameters

array $dirs: An associative array of extension directories, keyed by extension name.

Return value

array An associative array of extension directories, keyed by their namespace.

1 call to drupal_phpunit_get_extension_namespaces()
drupal_phpunit_populate_class_loader in core/tests/bootstrap.php
Populate class loader with additional namespaces for tests.

File

core/tests/bootstrap.php, line 82
Autoloader for Drupal PHPUnit testing.

Code

function drupal_phpunit_get_extension_namespaces($dirs) {
  $suite_names = [
    'Unit',
    'Kernel',
    'Functional',
    'Build',
    'FunctionalJavascript',
  ];
  $namespaces = [];
  foreach ($dirs as $extension => $dir) {
    if (is_dir($dir . '/src')) {

      // Register the PSR-4 directory for module-provided classes.
      $namespaces['Drupal\\' . $extension . '\\'][] = $dir . '/src';
    }
    $test_dir = $dir . '/tests/src';
    if (is_dir($test_dir)) {
      foreach ($suite_names as $suite_name) {
        $suite_dir = $test_dir . '/' . $suite_name;
        if (is_dir($suite_dir)) {

          // Register the PSR-4 directory for PHPUnit-based suites.
          $namespaces['Drupal\\Tests\\' . $extension . '\\' . $suite_name . '\\'][] = $suite_dir;
        }
      }

      // Extensions can have a \Drupal\Tests\extension\Traits namespace for
      // cross-suite trait code.
      $trait_dir = $test_dir . '/Traits';
      if (is_dir($trait_dir)) {
        $namespaces['Drupal\\Tests\\' . $extension . '\\Traits\\'][] = $trait_dir;
      }
    }
  }
  return $namespaces;
}