[REEF-2037] Make local file system deleteDirectory api recursive (#1474)
`DeleteDirectory` of `LocalFileSystem` does not do recursive delete unlike other filesystem implementations
JIRA:
[REEF-2037](https://issues.apache.org/jira/browse/REEF-2037)
Pull request:
This closes [1474](https://github.com/apache/reef/pull/1474)
diff --git a/lang/cs/Org.Apache.REEF.IO.Tests/TestLocalFileSystem.cs b/lang/cs/Org.Apache.REEF.IO.Tests/TestLocalFileSystem.cs
index cd17469..6272cb6 100644
--- a/lang/cs/Org.Apache.REEF.IO.Tests/TestLocalFileSystem.cs
+++ b/lang/cs/Org.Apache.REEF.IO.Tests/TestLocalFileSystem.cs
@@ -157,6 +157,33 @@
fs.DeleteDirectory(directoryUri);
}
+ [Fact]
+ public void TestDeleteDirectory()
+ {
+ var fs = GetFileSystem();
+ // Create directory
+ var directoryUri = new Uri(Path.Combine(Path.GetTempPath(), TempFileName) + "/");
+ fs.CreateDirectory(directoryUri);
+
+ // Create sub directory
+ string childDirName = "childDir";
+ var childDirUri = new Uri(directoryUri, childDirName);
+ fs.CreateDirectory(childDirUri);
+
+ // Create file
+ const string fileName = "testfile";
+ var fileUri = new Uri(directoryUri, fileName);
+ MakeRemoteTestFile(fs, fileUri);
+
+ //Create sub directory file
+ var childDirFileUri = new Uri(directoryUri, $"{childDirName}/{fileName}");
+ MakeRemoteTestFile(fs, childDirFileUri);
+
+ fs.DeleteDirectory(directoryUri);
+
+ Assert.False(File.Exists(directoryUri.AbsolutePath));
+ }
+
private IFileSystem GetFileSystem()
{
return TangFactory.GetTang()
diff --git a/lang/cs/Org.Apache.REEF.IO/FileSystem/Local/LocalFileSystem.cs b/lang/cs/Org.Apache.REEF.IO/FileSystem/Local/LocalFileSystem.cs
index 69a33ad..313fdd9 100644
--- a/lang/cs/Org.Apache.REEF.IO/FileSystem/Local/LocalFileSystem.cs
+++ b/lang/cs/Org.Apache.REEF.IO/FileSystem/Local/LocalFileSystem.cs
@@ -107,7 +107,7 @@
public void DeleteDirectory(Uri directoryUri)
{
- Directory.Delete(directoryUri.LocalPath);
+ Directory.Delete(directoryUri.LocalPath, true);
}
public IEnumerable<Uri> GetChildren(Uri directoryUri)