Skip to content

Commit e4c5a55

Browse files
committed
test: Add test for RunServer task
1 parent 396bbf3 commit e4c5a55

File tree

8 files changed

+25
-15
lines changed

8 files changed

+25
-15
lines changed

src/main/groovy/ru/endlesscode/bukkitgradle/DevServerPlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class DevServerPlugin implements Plugin<Project> {
3131
} as TaskProvider<PrepareServer>
3232

3333
project.tasks.register('runServer', RunServer) {
34-
scriptFile.set(generateRunningScript.map { it.scriptFile.get() })
34+
scriptFile.set(generateRunningScript.map { it.scriptFile.get().asFile })
3535
dependsOn(prepareServer)
3636
}
3737

src/main/groovy/ru/endlesscode/bukkitgradle/server/task/PrepareServer.groovy

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,32 @@
11
package ru.endlesscode.bukkitgradle.server.task
22

3+
import groovy.transform.Internal
34
import org.gradle.api.DefaultTask
45
import org.gradle.api.file.DirectoryProperty
6+
import org.gradle.api.file.RegularFile
57
import org.gradle.api.provider.Property
6-
import org.gradle.api.tasks.Input
8+
import org.gradle.api.provider.Provider
79
import org.gradle.api.tasks.InputDirectory
10+
import org.gradle.api.tasks.InputFile
811
import org.gradle.api.tasks.TaskAction
912
import org.gradle.jvm.tasks.Jar
1013
import ru.endlesscode.bukkitgradle.server.ServerCore
1114
import ru.endlesscode.bukkitgradle.server.extension.RunConfiguration
1215

1316
class PrepareServer extends DefaultTask {
14-
@Input
17+
@Internal
1518
ServerCore core
1619

1720
@InputDirectory
1821
final DirectoryProperty serverDir = project.objects.directoryProperty()
1922

20-
@Input
23+
@Internal
2124
final Property<Jar> jarTask = project.objects.property(Jar)
2225

23-
@Input
26+
@InputFile
27+
final Provider<RegularFile> jarFile = jarTask.map {it.archiveFile.get() }
28+
29+
@Internal
2430
RunConfiguration run
2531

2632
PrepareServer() {

src/main/kotlin/server/script/BashScriptStrategy.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal object BashScriptStrategy : RunningScriptStrategy() {
1515
""".trimIndent()
1616
}
1717

18-
override fun getCommand(title: String): List<String> {
18+
override fun getCommand(fileName: String, title: String): List<String> {
1919
return listOf("bash", "-c", "chmod +x $fileName && ./$fileName")
2020
}
2121
}

src/main/kotlin/server/script/RunningScriptStrategy.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal abstract class RunningScriptStrategy {
2424
}
2525

2626
/** Returns command for ProcessBuilder. */
27-
abstract fun getCommand(title: String): List<String>
27+
abstract fun getCommand(fileName: String, title: String): List<String>
2828

2929
companion object {
3030

src/main/kotlin/server/script/WindowsScriptStrategy.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal object WindowsScriptStrategy : RunningScriptStrategy() {
1414
""".trimIndent()
1515
}
1616

17-
override fun getCommand(title: String): List<String> {
17+
override fun getCommand(fileName: String, title: String): List<String> {
1818
return listOf("cmd", "/c", "start", "\"${title}\"", fileName)
1919
}
2020
}

src/main/kotlin/server/task/GenerateRunningScript.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.gradle.api.tasks.TaskAction
1313
import org.gradle.internal.os.OperatingSystem
1414
import org.gradle.kotlin.dsl.property
1515
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
16+
import ru.endlesscode.bukkitgradle.server.ServerConstants
1617
import ru.endlesscode.bukkitgradle.server.script.RunningScriptStrategy
1718
import javax.inject.Inject
1819

src/main/kotlin/server/task/RunServer.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package ru.endlesscode.bukkitgradle.server.task
22

33
import org.gradle.api.DefaultTask
4-
import org.gradle.api.file.RegularFileProperty
54
import org.gradle.api.model.ObjectFactory
65
import org.gradle.api.provider.Property
76
import org.gradle.api.tasks.Input
@@ -11,6 +10,7 @@ import org.gradle.internal.os.OperatingSystem
1110
import org.gradle.kotlin.dsl.property
1211
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1312
import ru.endlesscode.bukkitgradle.server.script.RunningScriptStrategy
13+
import java.io.File
1414
import javax.inject.Inject
1515

1616
/** Run dev server from script. */
@@ -20,7 +20,7 @@ public open class RunServer @Inject constructor(objects: ObjectFactory) : Defaul
2020
public val title: Property<String> = objects.property()
2121

2222
@Input
23-
public val scriptFile: RegularFileProperty = objects.fileProperty()
23+
public val scriptFile: Property<File> = objects.property()
2424

2525
@Internal
2626
public var osName: String = System.getProperty("os.name")
@@ -32,14 +32,16 @@ public open class RunServer @Inject constructor(objects: ObjectFactory) : Defaul
3232
description = "Run dev server from script."
3333

3434
title.convention("Dev Server")
35+
outputs.upToDateWhen { false }
3536
}
3637

3738
@TaskAction
3839
internal fun runServer() {
3940
logger.lifecycle("Starting Server...")
40-
ProcessBuilder(scriptStrategy.getCommand(title.get()))
41+
val scriptFile = scriptFile.get()
42+
ProcessBuilder(scriptStrategy.getCommand(scriptFile.name, title.get()))
4143
.redirectErrorStream(true)
42-
.directory(scriptFile.get().asFile.parentFile)
44+
.directory(scriptFile.parentFile)
4345
.start()
4446
logger.lifecycle("Server started successfully!")
4547
}

src/test/groovy/ru/endlesscode/bukkitgradle/server/task/RunServerSpec.groovy

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@ class RunServerSpec extends PluginSpecification {
1010

1111
def "when run runServer - should also task dependencies"() {
1212
when: "run server"
13-
def result = runServer()
13+
def result = runServer('-x', 'prepareServer')
1414

1515
then: "task should be successful"
16+
result.task(':generateRunningScript').outcome == TaskOutcome.SUCCESS
1617
result.task(TASK_NAME).outcome == TaskOutcome.SUCCESS
1718
}
1819

19-
private BuildResult runServer() {
20-
return runner.withArguments(TASK_NAME, "--stacktrace").build()
20+
private BuildResult runServer(String... args) {
21+
return runner.withArguments([TASK_NAME] + args.toList()).build()
2122
}
2223
}

0 commit comments

Comments
 (0)