diff --git a/core/phpunit.xml.dist b/core/phpunit.xml.dist index 2a55d680f3..1b0a01439f 100644 --- a/core/phpunit.xml.dist +++ b/core/phpunit.xml.dist @@ -26,6 +26,8 @@ + + diff --git a/core/tests/Drupal/KernelTests/KernelTestBase.php b/core/tests/Drupal/KernelTests/KernelTestBase.php index 0a611d87c2..707e25c043 100644 --- a/core/tests/Drupal/KernelTests/KernelTestBase.php +++ b/core/tests/Drupal/KernelTests/KernelTestBase.php @@ -507,6 +507,12 @@ protected function initFileCache() { */ private function getExtensionsForModules(array $modules) { $extensions = []; + + // Set directories to be ignored during filesystem scanning. + $settings = Settings::getAll(); + $settings['file_scan_ignore_directories'] = explode(',', getenv('SIMPLETEST_IGNORE_DIRECTORIES')); + new Settings($settings); + $discovery = new ExtensionDiscovery($this->root); $discovery->setProfileDirectories([]); $list = $discovery->scan('module'); diff --git a/core/tests/bootstrap.php b/core/tests/bootstrap.php index 7eb6ecb70c..a0fc1883b1 100644 --- a/core/tests/bootstrap.php +++ b/core/tests/bootstrap.php @@ -22,7 +22,13 @@ */ function drupal_phpunit_find_extension_directories($scan_directory) { $extensions = []; - $dirs = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($scan_directory, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS)); + + $ignore_directories = explode(',', getenv('SIMPLETEST_IGNORE_DIRECTORIES')); + $directory = new \RecursiveDirectoryIterator($scan_directory, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); + $filter = new \RecursiveCallbackFilterIterator($directory, function ($current, $key, $iterator) use ($ignore_directories) { + return !in_array($current->getFilename(), $ignore_directories); + }); + $dirs = new \RecursiveIteratorIterator($filter); foreach ($dirs as $dir) { if (strpos($dir->getPathname(), '.info.yml') !== FALSE) { // Cut off ".info.yml" from the filename for use as the extension name. We