blob: 82c08401e719bf9e7f1ee5bfdeed76ee342ca402 (
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
34
35
|
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)
}
}
}
}
|