From 343d0b5af2a9e7216ac7408d4cfc097742566770 Mon Sep 17 00:00:00 2001 From: hakre Date: Thu, 24 Jul 2014 14:42:37 +0200 Subject: [PATCH] added test removing directory with trailing slash that is symlinked #3144 #3157 --- tests/Composer/Test/Util/FilesystemTest.php | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/Composer/Test/Util/FilesystemTest.php b/tests/Composer/Test/Util/FilesystemTest.php index bffea7434..a4d1255f9 100644 --- a/tests/Composer/Test/Util/FilesystemTest.php +++ b/tests/Composer/Test/Util/FilesystemTest.php @@ -203,4 +203,38 @@ class FilesystemTest extends TestCase $this->assertTrue($result); $this->assertFalse(file_exists($symlinked)); } + + /** + * @link https://github.com/composer/composer/issues/3144 + */ + public function testRemoveSymlinkedDirectoryWithTrailingSlash() + { + $tmp = sys_get_temp_dir(); + $basepath = $tmp . "/composer_testdir"; + @mkdir($basepath . "/real", 0777, true); + touch($basepath . "/real/FILE"); + $symlinked = $basepath . "/linked"; + $symlinkedTrailingSlash = $symlinked . "/"; + + $result = @symlink($basepath . "/real", $symlinked); + + if (!$result) { + $this->markTestSkipped('Symbolic links for directories not supported on this platform'); + } + + if (!is_dir($symlinked)) { + $this->fail('Precondition assertion failed (is_dir is false on symbolic link to directory).'); + } + + if (!is_dir($symlinkedTrailingSlash)) { + $this->fail('Precondition assertion failed (is_dir false w trailing slash).'); + } + + $fs = new Filesystem(); + + $result = $fs->removeDirectory($symlinkedTrailingSlash); + $this->assertTrue($result); + $this->assertFalse(file_exists($symlinkedTrailingSlash)); + $this->assertFalse(file_exists($symlinked)); + } }