Fix of KT-7130

This commit is contained in:
Mikhail Glukhikh
2015-03-27 08:43:46 +01:00
committed by Mikhail Glukhikh
parent 1e536af87e
commit 5d7e388276
2 changed files with 36 additions and 13 deletions
@@ -307,7 +307,7 @@ public fun File.copyRecursively(dst: File,
* *
* @return true if the file or directory is successfully deleted, false otherwise. * @return true if the file or directory is successfully deleted, false otherwise.
*/ */
public fun File.deleteRecursively(): Boolean = walkBottomUp().fold(exists(), { res, it -> res && it.delete() }) public fun File.deleteRecursively(): Boolean = walkBottomUp().fold(exists(), { res, it -> it.delete() && res })
/** /**
* Returns an array of files and directories in the directory that match the specified [filter] * Returns an array of files and directories in the directory that match the specified [filter]
+23
View File
@@ -62,6 +62,8 @@ class FilesTest {
} }
class Walks { class Walks {
companion object {
fun createTestFiles(): File { fun createTestFiles(): File {
val basedir = createTempDir() val basedir = createTempDir()
File(basedir, "1").mkdir() File(basedir, "1").mkdir()
@@ -75,6 +77,7 @@ class FilesTest {
File(basedir, "8/9.txt".separatorsToSystem()).createNewFile() File(basedir, "8/9.txt".separatorsToSystem()).createNewFile()
return basedir return basedir
} }
}
test fun withSimple() { test fun withSimple() {
val basedir = createTestFiles() val basedir = createTestFiles()
@@ -791,6 +794,26 @@ class FilesTest {
assert(!dir.deleteRecursively()) assert(!dir.deleteRecursively())
} }
test fun deleteRecursivelyWithFail() {
val basedir = Walks.createTestFiles()
val restricted = File(basedir, "1")
try {
if (restricted.setReadable(false)) {
if (File(basedir, "7.txt").setReadable(false)) {
basedir.deleteRecursively()
var i = 0
for (file in basedir.walkTopDown()) {
i++
}
assertEquals(7, i)
}
}
} finally {
restricted.setReadable(true)
basedir.deleteRecursively()
}
}
test fun copyRecursively() { test fun copyRecursively() {
val src = createTempDir() val src = createTempDir()
val dst = createTempDir() val dst = createTempDir()