Fix of KT-7130
This commit is contained in:
committed by
Mikhail Glukhikh
parent
1e536af87e
commit
5d7e388276
@@ -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]
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user