Browse Source

[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 years ago
parent
commit
6898679b3c

+ 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));
+	}
 }