From a1446a9d3ef160f8d636de1f86f2bc33fd0ba33a Mon Sep 17 00:00:00 2001 From: Jacques Bodin-Hullin Date: Wed, 8 Jul 2020 15:01:35 +0200 Subject: [PATCH] Follow symlinks in themes/ --- spec/Locator/RecursiveFileLocatorSpec.php | 9 +++++++++ src/Locator/RecursiveFileLocator.php | 1 + 2 files changed, 10 insertions(+) diff --git a/spec/Locator/RecursiveFileLocatorSpec.php b/spec/Locator/RecursiveFileLocatorSpec.php index 775ba527..119caa75 100644 --- a/spec/Locator/RecursiveFileLocatorSpec.php +++ b/spec/Locator/RecursiveFileLocatorSpec.php @@ -39,6 +39,7 @@ function it_searches_for_file(FinderFactoryInterface $finderFactory, Finder $fin $finder->in('/search/path/')->shouldBeCalled()->willReturn($finder); $finder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($finder); $finder->files()->shouldBeCalled()->willReturn($finder); + $finder->followLinks()->shouldBeCalled()->willReturn($finder); $finder->getIterator()->willReturn(new \ArrayIterator([ $splFileInfo->getWrappedObject(), @@ -61,6 +62,7 @@ function it_searches_for_files( $finder->in('/search/path/')->shouldBeCalled()->willReturn($finder); $finder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($finder); $finder->files()->shouldBeCalled()->willReturn($finder); + $finder->followLinks()->shouldBeCalled()->willReturn($finder); $finder->getIterator()->willReturn(new \ArrayIterator([ $firstSplFileInfo->getWrappedObject(), @@ -90,6 +92,7 @@ function it_searches_for_files_at_a_maximum_depth( $finder->in('/search/path/')->shouldBeCalled()->willReturn($finder); $finder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($finder); $finder->files()->shouldBeCalled()->willReturn($finder); + $finder->followLinks()->shouldBeCalled()->willReturn($finder); $finder->getIterator()->willReturn(new \ArrayIterator([ $secondSplFileInfo->getWrappedObject(), @@ -123,6 +126,7 @@ function it_throws_an_exception_if_there_is_no_file_that_matches_the_given_name( $finder->in('/search/path/')->shouldBeCalled()->willReturn($finder); $finder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($finder); $finder->files()->shouldBeCalled()->willReturn($finder); + $finder->followLinks()->shouldBeCalled()->willReturn($finder); $finder->getIterator()->willReturn(new \ArrayIterator()); @@ -139,6 +143,7 @@ function it_throws_an_exception_if_there_is_there_are_not_any_files_that_matches $finder->in('/search/path/')->shouldBeCalled()->willReturn($finder); $finder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($finder); $finder->files()->shouldBeCalled()->willReturn($finder); + $finder->followLinks()->shouldBeCalled()->willReturn($finder); $finder->getIterator()->willReturn(new \ArrayIterator()); @@ -159,11 +164,13 @@ function it_isolates_finding_paths_from_multiple_sources( $firstFinder->in('/search/path/first/')->shouldBeCalled()->willReturn($firstFinder); $firstFinder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($firstFinder); $firstFinder->files()->shouldBeCalled()->willReturn($firstFinder); + $firstFinder->followLinks()->shouldBeCalled()->willReturn($firstFinder); $secondFinder->name('readme.md')->shouldBeCalled()->willReturn($secondFinder); $secondFinder->in('/search/path/second/')->shouldBeCalled()->willReturn($secondFinder); $secondFinder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($secondFinder); $secondFinder->files()->shouldBeCalled()->willReturn($secondFinder); + $secondFinder->followLinks()->shouldBeCalled()->willReturn($secondFinder); $firstFinder->getIterator()->willReturn(new \ArrayIterator([$splFileInfo->getWrappedObject()])); $secondFinder->getIterator()->willReturn(new \ArrayIterator()); @@ -189,11 +196,13 @@ function it_silences_finder_exceptions_even_if_searching_in_multiple_sources( $firstFinder->in('/search/path/first/')->shouldBeCalled()->willReturn($firstFinder); $firstFinder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($firstFinder); $firstFinder->files()->shouldBeCalled()->willReturn($firstFinder); + $firstFinder->followLinks()->shouldBeCalled()->willReturn($firstFinder); $secondFinder->name('readme.md')->shouldBeCalled()->willReturn($secondFinder); $secondFinder->in('/search/path/second/')->shouldBeCalled()->willReturn($secondFinder); $secondFinder->ignoreUnreadableDirs()->shouldBeCalled()->willReturn($secondFinder); $secondFinder->files()->shouldBeCalled()->willReturn($secondFinder); + $secondFinder->followLinks()->shouldBeCalled()->willReturn($secondFinder); $firstFinder->getIterator()->willReturn(new \ArrayIterator([$splFileInfo->getWrappedObject()])); $secondFinder->getIterator()->willThrow(\InvalidArgumentException::class); diff --git a/src/Locator/RecursiveFileLocator.php b/src/Locator/RecursiveFileLocator.php index 4b799cbb..89bb22bc 100644 --- a/src/Locator/RecursiveFileLocator.php +++ b/src/Locator/RecursiveFileLocator.php @@ -63,6 +63,7 @@ private function doLocateFilesNamed(string $name): \Generator $finder ->files() + ->followLinks() ->name($name) ->ignoreUnreadableDirs() ->in($path);