/** * 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 * phpunit's global state change watcher. The class loader can be retrieved from * composer at any time by requiring autoload.php. */ 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\\Tests', __DIR__); $loader->add('Drupal\\KernelTests', __DIR__); $loader->add('Drupal\\FunctionalTests', __DIR__); $loader->add('Drupal\\FunctionalJavascriptTests', __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', array()); $GLOBALS['namespaces'] = drupal_phpunit_get_extension_namespaces($dirs); } foreach ($GLOBALS['namespaces'] as $prefix => $paths) { $loader->addPsr4($prefix, $paths); } return $loader; }
// Register the PSR-4 directory for PHPUnit test classes. $namespaces['Drupal\\Tests\\' . $extension . '\\'][] = $dir . '/tests/src'; } } return $namespaces; } // Start with classes in known locations. $loader = (require __DIR__ . '/../../autoload.php'); $loader->add('Drupal\\Tests', __DIR__); $loader->add('Drupal\\KernelTests', __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', array()); $GLOBALS['namespaces'] = drupal_phpunit_get_extension_namespaces($dirs); } foreach ($GLOBALS['namespaces'] as $prefix => $paths) { $loader->addPsr4($prefix, $paths); } // Set sane locale settings, to ensure consistent string, dates, times and // numbers handling. // @see \Drupal\Core\DrupalKernel::bootEnvironment() setlocale(LC_ALL, 'C'); // Set the default timezone. While this doesn't cause any tests to fail, PHP // complains if 'date.timezone' is not set in php.ini. The Australia/Sydney // timezone is chosen so all tests are run using an edge case scenario (UTC+10 // and DST). This choice is made to prevent timezone related regressions and // reduce the fragility of the testing system in general. date_default_timezone_set('Australia/Sydney'); // Runtime assertions. PHPUnit follows the php.ini assert.active setting for