Files
werkator/src/test/kotlin/de/hoennig/gittally/build/ProcessBuildRunnerTest.kt
T

49 lines
1.6 KiB
Kotlin

package de.hoennig.gittally.build
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import java.nio.file.Files
import java.nio.file.Path
class ProcessBuildRunnerTest : FunSpec() {
private val runner = ProcessBuildRunner()
private fun tempDir(): Path = Files.createTempDirectory("gittally-runner-test")
init {
test("propagates the exit code") {
val process = runner.start("exit 7", tempDir(), emptyMap())
process.waitFor() shouldBe 7
}
test("passes the environment to the command") {
val process = runner.start("echo value=\$branch", tempDir(), mapOf("branch" to "feature/x"))
process.inputStream.readAllBytes().decodeToString() shouldContain "value=feature/x"
process.waitFor() shouldBe 0
}
test("runs in the given working directory") {
val dir = tempDir()
val process = runner.start("pwd", dir, emptyMap())
process.inputStream
.readAllBytes()
.decodeToString()
.trim() shouldBe dir.toRealPath().toString()
process.waitFor() shouldBe 0
}
test("keeps stdout and stderr separate") {
val process = runner.start("echo to-stdout; echo to-stderr 1>&2", tempDir(), emptyMap())
process.inputStream.readAllBytes().decodeToString() shouldContain "to-stdout"
process.errorStream.readAllBytes().decodeToString() shouldContain "to-stderr"
process.waitFor() shouldBe 0
}
}
}