Added fail parameter.

This commit is contained in:
Erik C. Thauvin 2016-07-11 19:06:15 -07:00
parent ecbe481de6
commit e39200912b
5 changed files with 29 additions and 27 deletions

2
.idea/kobalt.xml generated
View file

@ -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>

View file

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

View file

@ -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 />

View file

@ -1 +1 @@
kobalt.version=0.845
kobalt.version=0.846

View file

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