27 lines
710 B
Kotlin
27 lines
710 B
Kotlin
package de.hoennig.gittally.commands
|
|
|
|
import java.io.ByteArrayOutputStream
|
|
import java.io.PrintStream
|
|
|
|
data class CapturedConsole(
|
|
val stdout: String,
|
|
val stderr: String,
|
|
)
|
|
|
|
/** Captures `System.out` and `System.err` while [block] runs. */
|
|
fun captureConsole(block: () -> Unit): CapturedConsole {
|
|
val out = ByteArrayOutputStream()
|
|
val err = ByteArrayOutputStream()
|
|
val previousOut = System.out
|
|
val previousErr = System.err
|
|
System.setOut(PrintStream(out, true))
|
|
System.setErr(PrintStream(err, true))
|
|
try {
|
|
block()
|
|
} finally {
|
|
System.setOut(previousOut)
|
|
System.setErr(previousErr)
|
|
}
|
|
return CapturedConsole(out.toString(), err.toString())
|
|
}
|