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