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.
|
* @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]
|
||||||
|
|||||||
@@ -62,18 +62,21 @@ class FilesTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Walks {
|
class Walks {
|
||||||
fun createTestFiles(): File {
|
|
||||||
val basedir = createTempDir()
|
companion object {
|
||||||
File(basedir, "1").mkdir()
|
fun createTestFiles(): File {
|
||||||
File(basedir, "1/2".separatorsToSystem()).mkdir()
|
val basedir = createTempDir()
|
||||||
File(basedir, "1/3".separatorsToSystem()).mkdir()
|
File(basedir, "1").mkdir()
|
||||||
File(basedir, "1/3/4.txt".separatorsToSystem()).createNewFile()
|
File(basedir, "1/2".separatorsToSystem()).mkdir()
|
||||||
File(basedir, "1/3/5.txt".separatorsToSystem()).createNewFile()
|
File(basedir, "1/3".separatorsToSystem()).mkdir()
|
||||||
File(basedir, "6").mkdir()
|
File(basedir, "1/3/4.txt".separatorsToSystem()).createNewFile()
|
||||||
File(basedir, "7.txt").createNewFile()
|
File(basedir, "1/3/5.txt".separatorsToSystem()).createNewFile()
|
||||||
File(basedir, "8").mkdir()
|
File(basedir, "6").mkdir()
|
||||||
File(basedir, "8/9.txt".separatorsToSystem()).createNewFile()
|
File(basedir, "7.txt").createNewFile()
|
||||||
return basedir
|
File(basedir, "8").mkdir()
|
||||||
|
File(basedir, "8/9.txt".separatorsToSystem()).createNewFile()
|
||||||
|
return basedir
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
test fun withSimple() {
|
test fun withSimple() {
|
||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user