function drupal_phpunit_populate_class_loader

Same name and namespace in other branches
  1. 9 core/tests/bootstrap.php \drupal_phpunit_populate_class_loader()
  2. 8.9.x core/tests/bootstrap.php \drupal_phpunit_populate_class_loader()
  3. 10 core/tests/bootstrap.php \drupal_phpunit_populate_class_loader()

Populate class loader with additional namespaces for tests.

We run this in a function to avoid setting the class loader to a global that can change. This change can cause unpredictable false positives for the PHPUnit global state change watcher. The class loader can be retrieved from composer at any time by requiring autoload.php.

1 call to drupal_phpunit_populate_class_loader()
bootstrap.php in core/tests/bootstrap.php
Autoloader for Drupal PHPUnit testing.

File

core/tests/bootstrap.php, line 116

Code

function drupal_phpunit_populate_class_loader() {
    
    /** @var \Composer\Autoload\ClassLoader $loader */
    $loader = (require __DIR__ . '/../../autoload.php');
    // Start with classes in known locations.
    $loader->add('Drupal\\BuildTests', __DIR__);
    $loader->add('Drupal\\Tests', __DIR__);
    $loader->add('Drupal\\TestSite', __DIR__);
    $loader->add('Drupal\\KernelTests', __DIR__);
    $loader->add('Drupal\\FunctionalTests', __DIR__);
    $loader->add('Drupal\\FunctionalJavascriptTests', __DIR__);
    $loader->add('Drupal\\TestTools', __DIR__);
    if (!isset($GLOBALS['namespaces'])) {
        // Scan for arbitrary extension namespaces from core and contrib.
        $extension_roots = drupal_phpunit_contrib_extension_directory_roots();
        $dirs = array_map('drupal_phpunit_find_extension_directories', $extension_roots);
        $dirs = array_reduce($dirs, 'array_merge', []);
        $GLOBALS['namespaces'] = drupal_phpunit_get_extension_namespaces($dirs);
    }
    foreach ($GLOBALS['namespaces'] as $prefix => $paths) {
        $loader->addPsr4($prefix, $paths);
    }
    return $loader;
}

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