Added fail parameter.
This commit is contained in:
parent
ecbe481de6
commit
e39200912b
5 changed files with 29 additions and 27 deletions
2
.idea/kobalt.xml
generated
2
.idea/kobalt.xml
generated
|
@ -16,7 +16,7 @@
|
|||
<KobaltProjectSettings>
|
||||
<option name="autoDownloadKobalt" value="true" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/example" />
|
||||
<option name="kobaltHome" value="$USER_HOME$/.kobalt/wrapper/dist/kobalt-0.845" />
|
||||
<option name="kobaltHome" value="$USER_HOME$/.kobalt/wrapper/dist/kobalt-0.846" />
|
||||
<option name="useAutoImport" value="true" />
|
||||
</KobaltProjectSettings>
|
||||
</option>
|
||||
|
|
|
@ -37,7 +37,7 @@ val p = project {
|
|||
}
|
||||
|
||||
exec {
|
||||
commandLine(args = arrayOf("ls", "-- a"), dir = "../libs", fail = arrayOf(Fail.EXIT))
|
||||
commandLine(arrayOf("cmd", "/c", "echo", "Test"), os = arrayOf("Win"), fail = arrayOf(Fail.STDERR))
|
||||
commandLine(args = listOf("ls", "-- a"), dir = "../libs", fail = setOf(Fail.STDERR, Fail.EXIT))
|
||||
commandLine(listOf("cmd", "/c", "echo", "Test"), os = listOf("Win"), fail = setOf(Fail.STDERR, Fail.EXIT))
|
||||
}
|
||||
}
|
|
@ -25,9 +25,9 @@
|
|||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.testng:testng:jar:(0,]">
|
||||
<library name="Kobalt: com.beust:jcommander:jar:1.48">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/testng/testng/6.9.10/testng-6.9.10.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
@ -43,9 +43,9 @@
|
|||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: com.beust:jcommander:jar:1.48">
|
||||
<library name="Kobalt: org.testng:testng:jar:(0,]">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
|
||||
<root url="jar://$USER_HOME$/.kobalt/repository/org/testng/testng/6.9.10/testng-6.9.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
|
|
@ -1 +1 @@
|
|||
kobalt.version=0.845
|
||||
kobalt.version=0.846
|
|
@ -83,21 +83,23 @@ class ExecPlugin : BasePlugin(), ITaskContributor {
|
|||
pb.directory(loc)
|
||||
val proc = pb.start()
|
||||
val err = proc.waitFor(30, TimeUnit.SECONDS)
|
||||
val stdin = if (proc.inputStream.available() > 0) fromStream(proc.inputStream) else listOf()
|
||||
val stderr = if (proc.errorStream.available() > 0) fromStream(proc.errorStream) else listOf()
|
||||
val stdout = if (proc.inputStream.available() > 0) fromStream(proc.inputStream) else emptyList()
|
||||
val stderr = if (proc.errorStream.available() > 0) fromStream(proc.errorStream) else emptyList()
|
||||
|
||||
val errMsg = "Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): "
|
||||
|
||||
if (err == false) {
|
||||
error("Cannot run program \"" + it.args.joinToString(" ")
|
||||
+ "\" (in directory \"$dir\"): TIMEOUT")
|
||||
} else if (it.fail.contains(Fail.EXIT) && proc.exitValue() > 0) {
|
||||
error("Program \"" + it.args.joinToString(" ")
|
||||
+ "\" (in directory \"$dir\"): EXIT ${proc.exitValue()}")
|
||||
} else if (it.fail.contains(Fail.STDERR) && stderr.isNotEmpty()) {
|
||||
error("Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): STDERR, "
|
||||
+ stderr[0] + "...")
|
||||
} else if (it.fail.contains(Fail.STDIN) && stdin.isNotEmpty()) {
|
||||
error("Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): STDIN, "
|
||||
+ stdin[0] + "...")
|
||||
error(errMsg + "TIMEOUT")
|
||||
} else if (it.fail.isNotEmpty()) {
|
||||
val all = it.fail.contains(Fail.ALL)
|
||||
val output = it.fail.contains(Fail.OUTPUT)
|
||||
if ((all || it.fail.contains(Fail.EXIT)) && proc.exitValue() > 0) {
|
||||
error(errMsg + "EXIT ${proc.exitValue()}")
|
||||
} else if ((all || output || it.fail.contains(Fail.STDERR)) && stderr.isNotEmpty()) {
|
||||
error(errMsg + "STDERR, " + stderr[0])
|
||||
} else if ((all || output || it.fail.contains(Fail.STDOUT)) && stdout.isNotEmpty()) {
|
||||
error(errMsg + "STDOUT, " + stdout[0])
|
||||
}
|
||||
}
|
||||
|
||||
success = true
|
||||
|
@ -133,18 +135,18 @@ class ExecPlugin : BasePlugin(), ITaskContributor {
|
|||
}
|
||||
|
||||
enum class Fail() {
|
||||
STDERR, STDIN, EXIT
|
||||
ALL, STDERR, STDOUT, OUTPUT, EXIT
|
||||
}
|
||||
|
||||
data class CommandLine(var args: Array<String> = emptyArray(), var dir: String = "",
|
||||
var os: Array<String> = emptyArray(), var fail: Array<Fail> = emptyArray())
|
||||
data class CommandLine(var args: List<String> = emptyList(), var dir: String = "",
|
||||
var os: List<String> = emptyList(), var fail: Set<Fail> = emptySet())
|
||||
|
||||
data class ExecConfig(val project: Project) {
|
||||
val commandLines = arrayListOf<CommandLine>()
|
||||
|
||||
@Directive
|
||||
public fun commandLine(args: Array<String> = emptyArray(), dir: String = "", os: Array<String> = emptyArray(),
|
||||
fail: Array<Fail> = emptyArray()) {
|
||||
public fun commandLine(args: List<String> = emptyList(), dir: String = "", os: List<String> = emptyList(),
|
||||
fail: Set<Fail> = emptySet()) {
|
||||
if (args.size > 0) commandLines.add(CommandLine(args, dir, os, fail))
|
||||
}
|
||||
}
|
||||
|
@ -156,4 +158,4 @@ fun Project.exec(init: ExecConfig.() -> Unit): ExecConfig {
|
|||
(Kobalt.findPlugin(ExecPlugin.NAME) as ExecPlugin).addExecConfig(name, this)
|
||||
return this
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue