blob: 034c6a3ce18a4859473f41c3cb8f1ae2f742f6bc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package io.crashbox.ci
import java.io.{ ByteArrayOutputStream, File }
import java.nio.file.Files
object IOUtil {
def withTempDir[A](action: File => A): A = {
def rm(parent: File): Unit = if (parent.isDirectory) {
parent.listFiles.foreach{ child =>
rm(child)
}
}
val dir = Files.createTempDirectory("crashbox-test").toFile
try action(dir)
finally rm(dir)
}
def withTempStream[A](action: ByteArrayOutputStream => A, size: Int = 1024): A = {
val out = new ByteArrayOutputStream(size)
try action(out)
finally out.close()
}
def withTemp[A](action: (File, ByteArrayOutputStream) => A, size: Int = 1024): A = {
withTempDir { d =>
withTempStream { s =>
action(d, s)
}
}
}
}
|