diff --git a/src/Symfony/Component/Filesystem/Filesystem.php b/src/Symfony/Component/Filesystem/Filesystem.php index 85b7bbb038..ed032ed39b 100644 --- a/src/Symfony/Component/Filesystem/Filesystem.php +++ b/src/Symfony/Component/Filesystem/Filesystem.php @@ -94,7 +94,9 @@ class Filesystem if (is_dir($file) && !is_link($file)) { $this->remove(new \FilesystemIterator($file)); - + rmdir($file); + } elseif(is_dir($file) && is_link($file)) { + // https://bugs.php.net/bug.php?id=52176 windows thinks symlinks are directories rmdir($file); } else { unlink($file); diff --git a/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php b/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php index 3a1c7fd3ac..bbdbb9cecc 100644 --- a/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php +++ b/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php @@ -421,6 +421,20 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase $this->assertTrue(is_link($link)); $this->assertEquals($file, readlink($link)); } + + /** + * @depends testSymlink + */ + public function testRemoveSymlink() + { + $this->markAsSkippedIfSymlinkIsMissing(); + + $link = $this->workspace.DIRECTORY_SEPARATOR.'link'; + + $this->filesystem->remove($link); + + $this->assertTrue(!is_link($link)); + } public function testSymlinkIsOverwrittenIfPointsToDifferentTarget() {