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.eventPublisher
import alfred.web.core.process.Git
import alfred.web.core.process.Processes
import alfred.web.core.process.Script
import alfred.web.system.ProcessEnvironment
import alfred.web.system.Processes
import io.mockk.every
import io.mockk.justRun
import io.mockk.mockk
@ -22,7 +22,7 @@ import java.nio.file.Paths
class GitRunnerTest {
@Test
fun runs(@TempDir logsDir: Path) {
fun runs(@TempDir homeDir: Path) {
// Given
val eventPublisher = eventPublisher(BuildFinished::class)
@ -31,14 +31,19 @@ class GitRunnerTest {
justRun { git.checkout(any(), any()) }
val script = mockk<Script>()
every { script.execute(any(), any(), any()) } returns (mockk<Process>(relaxed = true))
every { script.exists(any()) } returns (true)
every { script.execute(any(), any(), any()) } returns mockk<Process>(relaxed = true)
every { script.exists(any()) } returns true
val workspacesSpy = spyk(Workspaces())
val homeDir = Paths.get("").toAbsolutePath().resolve("src/test/resources/home-1")
val home = spyk(AlfredHome(homeDir.toFile().absolutePath))
every { home.logsDir() } returns logsDir
val home = mockk<AlfredHome>()
every { home.buildConfig(any()) } returns homeDir.resolve("simple-git.properties")
every { home.logsDir() } returns homeDir.resolve("logs")
every { home.homePath } returns homeDir
homeDir
.resolve("simple-git.properties")
.toFile()
.writeText(buildProperties())
val runner = GitRunner(
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.eventPublisher
import alfred.web.core.process.Script
import io.mockk.every
import io.mockk.mockk
import io.mockk.slot
import io.mockk.spyk
import io.mockk.verify
import io.mockk.*
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.io.TempDir
import java.nio.file.Path
import java.nio.file.Paths
class ScriptRunnerTest {
@Test
fun runs(@TempDir logDir: Path) {
fun runs(@TempDir homeDir: Path) {
// Given
val home = spyk(
AlfredHome(
Paths.get("").toAbsolutePath().resolve("src/test/resources/home-1").toString()
)
)
every { home.logsDir() } returns logDir
val home = mockk<AlfredHome>()
every { home.buildConfig(any()) } returns homeDir.resolve("simple-script.properties")
every { home.logsDir() } returns homeDir.resolve("logs")
every { home.homePath } returns homeDir
homeDir
.resolve("simple-script.properties")
.toFile()
.writeText(buildProperties())
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)
val onExit = slot<() -> Unit>()
every { script.onExit(any(), capture(onExit)) } answers { onExit.captured() }
@ -52,7 +49,7 @@ class ScriptRunnerTest {
)
// Then
verify(timeout = 1_000, exactly = 1) {
verifyOrder {
script.execute(any(), any(), match { it.name == "some-script" })
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