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.
*/
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]
+35 -12
View File
@@ -62,18 +62,21 @@ class FilesTest {
}
class Walks {
fun createTestFiles(): File {
val basedir = createTempDir()
File(basedir, "1").mkdir()
File(basedir, "1/2".separatorsToSystem()).mkdir()
File(basedir, "1/3".separatorsToSystem()).mkdir()
File(basedir, "1/3/4.txt".separatorsToSystem()).createNewFile()
File(basedir, "1/3/5.txt".separatorsToSystem()).createNewFile()
File(basedir, "6").mkdir()
File(basedir, "7.txt").createNewFile()
File(basedir, "8").mkdir()
File(basedir, "8/9.txt".separatorsToSystem()).createNewFile()
return basedir
companion object {
fun createTestFiles(): File {
val basedir = createTempDir()
File(basedir, "1").mkdir()
File(basedir, "1/2".separatorsToSystem()).mkdir()
File(basedir, "1/3".separatorsToSystem()).mkdir()
File(basedir, "1/3/4.txt".separatorsToSystem()).createNewFile()
File(basedir, "1/3/5.txt".separatorsToSystem()).createNewFile()
File(basedir, "6").mkdir()
File(basedir, "7.txt").createNewFile()
File(basedir, "8").mkdir()
File(basedir, "8/9.txt".separatorsToSystem()).createNewFile()
return basedir
}
}
test fun withSimple() {
@@ -790,6 +793,26 @@ class FilesTest {
assert(!dir.exists())
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() {
val src = createTempDir()