bootstrap.php in Zircon Profile 8
Same filename in this branch
- 8 core/tests/bootstrap.php
- 8 vendor/sebastian/comparator/tests/bootstrap.php
- 8 vendor/twig/twig/test/bootstrap.php
- 8 vendor/egulias/email-validator/tests/bootstrap.php
- 8 vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php
- 8 vendor/phpunit/phpunit/tests/bootstrap.php
- 8 vendor/phpunit/php-token-stream/tests/bootstrap.php
- 8 vendor/composer/installers/tests/bootstrap.php
- 8 vendor/composer/installers/src/bootstrap.php
- 8 vendor/behat/mink/driver-testsuite/bootstrap.php
- 8 vendor/symfony-cmf/routing/Tests/bootstrap.php
- 8 vendor/guzzlehttp/psr7/tests/bootstrap.php
- 8 vendor/guzzlehttp/promises/tests/bootstrap.php
Same filename and directory in other branches
Autoloader for Drupal PHPUnit testing.
See also
phpunit.xml.dist
File
core/tests/bootstrap.phpView source
<?php
/**
* @file
* Autoloader for Drupal PHPUnit testing.
*
* @see phpunit.xml.dist
*/
/**
* Finds all valid extension directories recursively within a given directory.
*
* @param string $scan_directory
* The directory that should be recursively scanned.
* @return array
* An associative array of extension directories found within the scanned
* directory, keyed by extension name.
*/
function drupal_phpunit_find_extension_directories($scan_directory) {
$extensions = array();
$dirs = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($scan_directory, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS));
foreach ($dirs as $dir) {
if (strpos($dir
->getPathname(), '.info.yml') !== FALSE) {
// Cut off ".info.yml" from the filename for use as the extension name.
$extensions[substr($dir
->getFilename(), 0, -9)] = $dir
->getPathInfo()
->getRealPath();
}
}
return $extensions;
}
/**
* Returns directories under which contributed extensions may exist.
*
* @return array
* An array of directories under which contributed extensions may exist.
*/
function drupal_phpunit_contrib_extension_directory_roots() {
$root = dirname(dirname(__DIR__));
$paths = array(
$root . '/core/modules',
$root . '/core/profiles',
$root . '/modules',
$root . '/profiles',
);
$sites_path = $root . '/sites';
// Note this also checks sites/../modules and sites/../profiles.
foreach (scandir($sites_path) as $site) {
if ($site[0] === '.' || $site === 'simpletest') {
continue;
}
$path = "{$sites_path}/{$site}";
$paths[] = is_dir("{$path}/modules") ? realpath("{$path}/modules") : NULL;
$paths[] = is_dir("{$path}/profiles") ? realpath("{$path}/profiles") : NULL;
}
return array_filter($paths);
}
/**
* Registers the namespace for each extension directory with the autoloader.
*
* @param array $dirs
* An associative array of extension directories, keyed by extension name.
*
* @return array
* An associative array of extension directories, keyed by their namespace.
*/
function drupal_phpunit_get_extension_namespaces($dirs) {
$namespaces = array();
foreach ($dirs as $extension => $dir) {
if (is_dir($dir . '/src')) {
// Register the PSR-4 directory for module-provided classes.
$namespaces['Drupal\\' . $extension . '\\'][] = $dir . '/src';
}
if (is_dir($dir . '/tests/src')) {
// Register the PSR-4 directory for PHPUnit test classes.
$namespaces['Drupal\\Tests\\' . $extension . '\\'][] = $dir . '/tests/src';
}
}
return $namespaces;
}
// We define the COMPOSER_INSTALL constant, so that PHPUnit knows where to
// autoload from. This is needed for tests run in isolation mode, because
// phpunit.xml.dist is located in a non-default directory relative to the
// PHPUnit executable.
if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
define('PHPUNIT_COMPOSER_INSTALL', __DIR__ . '/../../autoload.php');
}
// 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
// runtime assertions. By default this setting is on. Here we make a call to
// make PHP 5 and 7 handle assertion failures the same way, but this call does
// not turn runtime assertions on if they weren't on already.
\Drupal\Component\Assertion\Handle::register();
Functions
Name | Description |
---|---|
drupal_phpunit_contrib_extension_directory_roots | Returns directories under which contributed extensions may exist. |
drupal_phpunit_find_extension_directories | Finds all valid extension directories recursively within a given directory. |
drupal_phpunit_get_extension_namespaces | Registers the namespace for each extension directory with the autoloader. |