diff --git a/libraries/stdlib/src/kotlin/io/files/Utils.kt b/libraries/stdlib/src/kotlin/io/files/Utils.kt index f9274b2c40b..a66160e4dd2 100644 --- a/libraries/stdlib/src/kotlin/io/files/Utils.kt +++ b/libraries/stdlib/src/kotlin/io/files/Utils.kt @@ -367,7 +367,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 -> it.delete() && res }) +public fun File.deleteRecursively(): Boolean = walkBottomUp().fold(true, { res, it -> (it.delete() || !it.exists()) && res }) /** * Returns an array of files and directories in the directory that match the specified [filter] diff --git a/libraries/stdlib/test/io/Files.kt b/libraries/stdlib/test/io/Files.kt index 41767d1b0cb..c83fe5417f7 100644 --- a/libraries/stdlib/test/io/Files.kt +++ b/libraries/stdlib/test/io/Files.kt @@ -440,7 +440,7 @@ class FilesTest { assertTrue(dir.deleteRecursively()) assertFalse(dir.exists()) - assertFalse(dir.deleteRecursively()) + assertTrue(dir.deleteRecursively()) } @test fun deleteRecursivelyWithFail() { @@ -449,7 +449,7 @@ class FilesTest { try { if (restricted.setReadable(false)) { if (File(basedir, "7.txt").setReadable(false)) { - basedir.deleteRecursively() + assertFalse(basedir.deleteRecursively(), "Expected incomplete recursive deletion.") restricted.setReadable(true) File(basedir, "7.txt").setReadable(true) var i = 0