diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php index 08d8871..1a57d9e 100644 --- a/core/tests/bootstrap.php +++ b/core/tests/bootstrap.php @@ -1,21 +1,86 @@ add('Drupal\\' . $item, $lib_path); + } + } + } + } +} + +/** + * Start scanning for module namespaces to autoload. + * + * @param ComposerAutoloader $loader + * The supplied autoloader. + */ +function _drupal_phpunit_autoload_scan($loader) { + // Some easy places to look. + $scan_these_directories = array( + __DIR__ . "/../modules", + __DIR__ . "/../../modules", + ); + // Add all the /sites subfolders, ruling out sites/*/files. + $sites_dir = __DIR__ . "/../../sites"; + $site_folders = scandir($sites_dir); + // Scan through the multisite folders. + foreach($site_folders as $item) { + if (is_dir("$sites_dir/$item") && !in_array($item, array('.', '..'))) { + $multisite_subfolders = scandir("$sites_dir/$item"); + foreach($multisite_subfolders as $subitem) { + // Rule out /sites/*/files + if ($subitem != 'files') { + $scan_these_directories[] = "$sites_dir/$item/$subitem"; + } + } + } + } + foreach($scan_these_directories as $path) { + _drupal_phpunit_scan_autoload_directories($loader, $path); + } +} + +// Start with classes in known locations. $loader = require __DIR__ . "/../vendor/autoload.php"; $loader->add('Drupal\\', __DIR__); $loader->add('Drupal\Core', __DIR__ . "/../../core/lib"); $loader->add('Drupal\Component', __DIR__ . "/../../core/lib"); -foreach (scandir(__DIR__ . "/../modules") as $module) { - $loader->add('Drupal\\' . $module, __DIR__ . "/../modules/" . $module . "/lib"); - // Add test module classes. - $test_modules_dir = __DIR__ . "/../modules/$module/tests/modules"; - if (is_dir($test_modules_dir)) { - foreach (scandir($test_modules_dir) as $test_module) { - $loader->add('Drupal\\' . $test_module, $test_modules_dir . '/' . $test_module . '/lib'); - } - } -} +// Scan for arbitrary module namespaces. +_drupal_phpunit_autoload_scan($loader); require __DIR__ . "/../../core/lib/Drupal.php"; // Look into removing this later.