make alfred home in tests more intelligent

master
Josha von Gizycki 2 weeks ago
parent 0bca92aef4
commit 389a999e8a

@ -6,9 +6,9 @@ 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.Git import alfred.web.core.process.Git
import alfred.web.core.process.Processes
import alfred.web.core.process.Script import alfred.web.core.process.Script
import alfred.web.system.ProcessEnvironment import alfred.web.system.ProcessEnvironment
import alfred.web.system.Processes
import io.mockk.every import io.mockk.every
import io.mockk.justRun import io.mockk.justRun
import io.mockk.mockk import io.mockk.mockk
@ -22,7 +22,7 @@ import java.nio.file.Paths
class GitRunnerTest { class GitRunnerTest {
@Test @Test
fun runs(@TempDir logsDir: Path) { fun runs(@TempDir homeDir: Path) {
// Given // Given
val eventPublisher = eventPublisher(BuildFinished::class) val eventPublisher = eventPublisher(BuildFinished::class)
@ -31,14 +31,19 @@ class GitRunnerTest {
justRun { git.checkout(any(), any()) } justRun { git.checkout(any(), any()) }
val script = mockk<Script>() val script = mockk<Script>()
every { script.execute(any(), any(), any()) } returns (mockk<Process>(relaxed = true)) every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true)
every { script.exists(any()) } returns (true) every { script.exists(any()) } returns true
val workspacesSpy = spyk(Workspaces()) val workspacesSpy = spyk(Workspaces())
val homeDir = Paths.get("").toAbsolutePath().resolve("src/test/resources/home-1") val home = mockk<AlfredHome>()
val home = spyk(AlfredHome(homeDir.toFile().absolutePath)) every { home.buildConfig(any()) } returns homeDir.resolve("simple-git.properties")
every { home.logsDir() } returns logsDir every { home.logsDir() } returns homeDir.resolve("logs")
every { home.homePath } returns homeDir
homeDir
.resolve("simple-git.properties")
.toFile()
.writeText(buildProperties())
val runner = GitRunner( val runner = GitRunner(
builds = Builds(home), builds = Builds(home),
@ -70,4 +75,13 @@ class GitRunnerTest {
} }
} }
fun buildProperties() =
"""
user=alfred
workspace=/tmp
apikey=Mellon
git.repo.url=some.url
""".trimIndent()
} }

@ -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()
} }

@ -1,5 +0,0 @@
user=alfred
workspace=/tmp
apikey=Mellon
git.repo.url=some.url

@ -1,5 +0,0 @@
user=alfred
workspace=/tmp
apikey=Mellon
script=some-script
Loading…
Cancel
Save