diff --git a/package_manager/src/PathExcluder/UnknownPathExcluder.php b/package_manager/src/PathExcluder/UnknownPathExcluder.php index d0ae54dbc349e1ece78d238bc83805d84d49b0c7..163c4c40d18a971e311a80c0bda2dacc36be92f8 100644 --- a/package_manager/src/PathExcluder/UnknownPathExcluder.php +++ b/package_manager/src/PathExcluder/UnknownPathExcluder.php @@ -64,7 +64,8 @@ final class UnknownPathExcluder implements EventSubscriberInterface { // @todo Refactor in https://www.drupal.org/project/automatic_updates/issues/3334994. $core_packages = $event->stage->getActiveComposer()->getCorePackages(); $scaffold_files_paths = $this->getScaffoldFiles($core_packages); - $paths_in_project_root = glob("$project_root/*"); + // Search for all files (including hidden ones) in project root. + $paths_in_project_root = glob("$project_root/{,.}*", GLOB_BRACE); $paths = []; $known_paths = array_merge([$vendor_dir, $web_root, "$project_root/composer.json", "$project_root/composer.lock"], $scaffold_files_paths); foreach ($paths_in_project_root as $path_in_project_root) { diff --git a/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php b/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php index c56be2627045df2bf71de554e02acebc4dc22381..642047efddf0ee7d23eaf94313f463d7cbe6fedb 100644 --- a/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php +++ b/package_manager/tests/src/Kernel/PathExcluder/UnknownPathExcluderTest.php @@ -94,6 +94,16 @@ class UnknownPathExcluderTest extends PackageManagerKernelTestBase { NULL, ['unknown_file.txt'], ], + 'unknown hidden file where web and project root same' => [ + FALSE, + NULL, + ['.unknown_file'], + ], + 'unknown hidden file where web and project root different' => [ + TRUE, + NULL, + ['.unknown_file'], + ], 'unknown directory where web and project root same' => [ FALSE, 'unknown_dir', @@ -104,6 +114,16 @@ class UnknownPathExcluderTest extends PackageManagerKernelTestBase { 'unknown_dir', ['unknown_dir/unknown_dir.README.md', 'unknown_dir/unknown_file.txt'], ], + 'unknown hidden directory where web and project root same' => [ + FALSE, + '.unknown_dir', + ['.unknown_dir/unknown_dir.README.md', '.unknown_dir/unknown_file.txt'], + ], + 'unknown hidden directory where web and project root different' => [ + TRUE, + '.unknown_dir', + ['.unknown_dir/unknown_dir.README.md', '.unknown_dir/unknown_file.txt'], + ], ]; }