浏览代码

[java/php7] fix FileSystem.createDirectory() for dirs that exist, closes #6268 (#6280)

* [java] fix FileSystem.createDirectory() for dirs that exist, closes #6268

* Fix PHP7 as well
Jens Fischer 8 年之前
父节点
当前提交
6898679b3c
共有 3 个文件被更改,包括 11 次插入2 次删除
  1. 2 1
      std/java/_std/sys/FileSystem.hx
  2. 2 1
      std/php7/_std/sys/FileSystem.hx
  3. 7 0
      tests/sys/src/TestFileSystem.hx

+ 2 - 1
std/java/_std/sys/FileSystem.hx

@@ -83,7 +83,8 @@ class FileSystem {
 
 	public static function createDirectory( path : String ) : Void
 	{
-		if (!new File(path).mkdirs())
+		var f = new File(path);
+		if (!f.isDirectory() && !f.mkdirs())
 			throw "Cannot create dir " + path;
 	}
 

+ 2 - 1
std/php7/_std/sys/FileSystem.hx

@@ -86,7 +86,8 @@ class FileSystem {
 	}
 
 	public static inline function createDirectory( path : String ) : Void {
-		Global.mkdir(path, 493, true);
+		if (!Global.is_dir(path))
+			Global.mkdir(path, 493, true);
 	}
 
 	public static inline function deleteFile( path : String ) : Void {

+ 7 - 0
tests/sys/src/TestFileSystem.hx

@@ -113,4 +113,11 @@ class TestFileSystem extends haxe.unit.TestCase {
 		var stat = FileSystem.stat(dir);
 		assertTrue(stat != null);
 	}
+
+	function testCreateExistingDirectory() {
+		var testDir = dir + "exists";
+		FileSystem.createDirectory(testDir);
+		FileSystem.createDirectory(testDir); // shouldn't throw
+		assertTrue(FileSystem.isDirectory(testDir));
+	}
 }