|
|
@ -6,32 +6,29 @@ import alfred.web.core.build.Workspaces
|
|
|
|
import alfred.web.core.event.BuildFinished
|
|
|
|
import alfred.web.core.event.BuildFinished
|
|
|
|
import alfred.web.core.eventPublisher
|
|
|
|
import alfred.web.core.eventPublisher
|
|
|
|
import alfred.web.core.process.Script
|
|
|
|
import alfred.web.core.process.Script
|
|
|
|
import io.mockk.every
|
|
|
|
import io.mockk.*
|
|
|
|
import io.mockk.mockk
|
|
|
|
|
|
|
|
import io.mockk.slot
|
|
|
|
|
|
|
|
import io.mockk.spyk
|
|
|
|
|
|
|
|
import io.mockk.verify
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test
|
|
|
|
import org.junit.jupiter.api.Test
|
|
|
|
import org.junit.jupiter.api.io.TempDir
|
|
|
|
import org.junit.jupiter.api.io.TempDir
|
|
|
|
import java.nio.file.Path
|
|
|
|
import java.nio.file.Path
|
|
|
|
import java.nio.file.Paths
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ScriptRunnerTest {
|
|
|
|
class ScriptRunnerTest {
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun runs(@TempDir logDir: Path) {
|
|
|
|
fun runs(@TempDir homeDir: Path) {
|
|
|
|
// Given
|
|
|
|
// Given
|
|
|
|
val home = spyk(
|
|
|
|
val home = mockk<AlfredHome>()
|
|
|
|
AlfredHome(
|
|
|
|
every { home.buildConfig(any()) } returns homeDir.resolve("simple-script.properties")
|
|
|
|
Paths.get("").toAbsolutePath().resolve("src/test/resources/home-1").toString()
|
|
|
|
every { home.logsDir() } returns homeDir.resolve("logs")
|
|
|
|
)
|
|
|
|
every { home.homePath } returns homeDir
|
|
|
|
)
|
|
|
|
homeDir
|
|
|
|
every { home.logsDir() } returns logDir
|
|
|
|
.resolve("simple-script.properties")
|
|
|
|
|
|
|
|
.toFile()
|
|
|
|
|
|
|
|
.writeText(buildProperties())
|
|
|
|
|
|
|
|
|
|
|
|
val eventPublisher = eventPublisher(BuildFinished::class)
|
|
|
|
val eventPublisher = eventPublisher(BuildFinished::class)
|
|
|
|
|
|
|
|
|
|
|
|
val script = mockk<Script>()
|
|
|
|
val script = mockk<Script>(relaxed = true)
|
|
|
|
every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true)
|
|
|
|
every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true)
|
|
|
|
val onExit = slot<() -> Unit>()
|
|
|
|
val onExit = slot<() -> Unit>()
|
|
|
|
every { script.onExit(any(), capture(onExit)) } answers { onExit.captured() }
|
|
|
|
every { script.onExit(any(), capture(onExit)) } answers { onExit.captured() }
|
|
|
@ -52,7 +49,7 @@ class ScriptRunnerTest {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// Then
|
|
|
|
// Then
|
|
|
|
verify(timeout = 1_000, exactly = 1) {
|
|
|
|
verifyOrder {
|
|
|
|
script.execute(any(), any(), match { it.name == "some-script" })
|
|
|
|
script.execute(any(), any(), match { it.name == "some-script" })
|
|
|
|
|
|
|
|
|
|
|
|
workspaces.cleanUp(any())
|
|
|
|
workspaces.cleanUp(any())
|
|
|
@ -61,4 +58,13 @@ class ScriptRunnerTest {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun buildProperties() =
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
user=alfred
|
|
|
|
|
|
|
|
workspace=/tmp
|
|
|
|
|
|
|
|
apikey=Mellon
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
script=some-script
|
|
|
|
|
|
|
|
""".trimIndent()
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|