From 44955bea53f6a9cbc9e8adab2a50db91fdd77b35 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 13 Jun 2017 20:10:15 +0200 Subject: [PATCH] [Config] Fix ** GlobResource on Windows --- src/Symfony/Component/Config/Resource/GlobResource.php | 2 +- .../Component/Config/Tests/Resource/GlobResourceTest.php | 9 +++++++++ src/Symfony/Component/Config/composer.json | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Config/Resource/GlobResource.php b/src/Symfony/Component/Config/Resource/GlobResource.php index 67625201530f..20cab1e81d55 100644 --- a/src/Symfony/Component/Config/Resource/GlobResource.php +++ b/src/Symfony/Component/Config/Resource/GlobResource.php @@ -134,7 +134,7 @@ function (\SplFileInfo $file) { return '.' !== $file->getBasename()[0]; } $prefixLen = strlen($this->prefix); foreach ($finder->followLinks()->sortByName()->in($this->prefix) as $path => $info) { - if (preg_match($regex, substr($path, $prefixLen)) && $info->isFile()) { + if (preg_match($regex, substr('\\' === \DIRECTORY_SEPARATOR ? str_replace('\\', '/', $path) : $path, $prefixLen)) && $info->isFile()) { yield $path => $info; } } diff --git a/src/Symfony/Component/Config/Tests/Resource/GlobResourceTest.php b/src/Symfony/Component/Config/Tests/Resource/GlobResourceTest.php index b84cc9d3ae3b..bf7291fdd66b 100644 --- a/src/Symfony/Component/Config/Tests/Resource/GlobResourceTest.php +++ b/src/Symfony/Component/Config/Tests/Resource/GlobResourceTest.php @@ -36,6 +36,15 @@ public function testIterator() $this->assertEquals(array($file => new \SplFileInfo($file)), $paths); $this->assertInstanceOf('SplFileInfo', current($paths)); $this->assertSame($dir, $resource->getPrefix()); + + $resource = new GlobResource($dir, '/**/Resource', true); + + $paths = iterator_to_array($resource); + + $file = $dir.DIRECTORY_SEPARATOR.'Resource'.DIRECTORY_SEPARATOR.'ConditionalClass.php'; + $this->assertEquals(array($file => $file), $paths); + $this->assertInstanceOf('SplFileInfo', current($paths)); + $this->assertSame($dir, $resource->getPrefix()); } public function testIsFreshNonRecursiveDetectsNewFile() diff --git a/src/Symfony/Component/Config/composer.json b/src/Symfony/Component/Config/composer.json index 88090d463da6..7a51c91ed591 100644 --- a/src/Symfony/Component/Config/composer.json +++ b/src/Symfony/Component/Config/composer.json @@ -20,10 +20,12 @@ "symfony/filesystem": "~2.8|~3.0" }, "require-dev": { + "symfony/finder": "~3.3", "symfony/yaml": "~3.0", "symfony/dependency-injection": "~3.3" }, "conflict": { + "symfony/finder": "<3.3", "symfony/dependency-injection": "<3.3" }, "suggest": {