KT-3290 File.recurse NPE

#KT-3290 fixed
This commit is contained in:
Evgeny Gerashchenko
2013-03-01 23:28:09 +04:00
parent bfd80e7855
commit 0e85fdd2cf
2 changed files with 28 additions and 2 deletions
+3 -2
View File
@@ -12,8 +12,9 @@ import java.net.URL
*/
public fun File.recurse(block: (File) -> Unit): Unit {
block(this)
if (this.isDirectory()) {
for (child in this.listFiles()!!) {
val children = this.listFiles()
if (children != null) {
for (child in children) {
child.recurse(block)
}
}
+25
View File
@@ -110,4 +110,29 @@ class IoTest(){
assertEquals("", file1.relativePath(file1))
assertEquals(file3.canonicalPath, file1.relativePath(file3))
}
test fun listFiles() {
val dir = File.createTempFile("temp", System.nanoTime().toString())
dir.delete()
dir.mkdir()
File.createTempFile("temp", "1.kt", dir)
File.createTempFile("temp", "2.java", dir)
val subdir = File(dir, "subdir")
subdir.mkdir()
File(subdir, "3.txt").createNewFile()
var totalFiles = 0
dir.recurse { totalFiles++ }
assertEquals(5, totalFiles)
subdir.setReadable(false)
var totalFilesWithUnReadableDir = 0
dir.recurse { totalFilesWithUnReadableDir++ }
assertEquals(4, totalFilesWithUnReadableDir)
}
}