diff --git a/src/FileSystem/FilesFinder.php b/src/FileSystem/FilesFinder.php index d29c4730e50..6d2bfbde218 100644 --- a/src/FileSystem/FilesFinder.php +++ b/src/FileSystem/FilesFinder.php @@ -116,8 +116,9 @@ private function addFilterWithExcludedPaths(Finder $finder): void } $finder->filter(function (SplFileInfo $splFileInfo) use ($excludePaths): bool { + /** @var string|false $realPath */ $realPath = $splFileInfo->getRealPath(); - if ($realPath === '') { + if ($realPath === false) { // dead symlink return false; } diff --git a/tests/FileSystem/FilesFinder/FilesFinderTest.php b/tests/FileSystem/FilesFinder/FilesFinderTest.php index 55dd1404619..274264be95a 100644 --- a/tests/FileSystem/FilesFinder/FilesFinderTest.php +++ b/tests/FileSystem/FilesFinder/FilesFinderTest.php @@ -35,6 +35,14 @@ public function testWithFollowingSymlinks(): void $this->assertCount(2, $foundFiles); } + public function testWithFollowingBrokenSymlinks(): void + { + $this->bootFromConfigFiles([__DIR__ . '/config/test_broken_symlinks.php']); + $filesFinder = $this->getService(FilesFinder::class); + $foundFiles = $filesFinder->findInDirectoriesAndFiles([__DIR__ . '/SourceWithBrokenSymlinks']); + $this->assertCount(0, $foundFiles); + } + /** * @dataProvider provideData() */ diff --git a/tests/FileSystem/FilesFinder/SourceWithBrokenSymlinks/folder1/foo.txt b/tests/FileSystem/FilesFinder/SourceWithBrokenSymlinks/folder1/foo.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/FileSystem/FilesFinder/SourceWithBrokenSymlinks/folder2/folder3 b/tests/FileSystem/FilesFinder/SourceWithBrokenSymlinks/folder2/folder3 new file mode 120000 index 00000000000..2d1db2ad3a6 --- /dev/null +++ b/tests/FileSystem/FilesFinder/SourceWithBrokenSymlinks/folder2/folder3 @@ -0,0 +1 @@ +folderBroken \ No newline at end of file diff --git a/tests/FileSystem/FilesFinder/config/test_broken_symlinks.php b/tests/FileSystem/FilesFinder/config/test_broken_symlinks.php new file mode 100644 index 00000000000..cbf49ed12e9 --- /dev/null +++ b/tests/FileSystem/FilesFinder/config/test_broken_symlinks.php @@ -0,0 +1,11 @@ +parameters(); + $parameters->set(Option::SKIP, [__DIR__ . '/../SourceWithBrokenSymlinks/folder1']); +};