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> <KobaltProjectSettings>
<option name="autoDownloadKobalt" value="true" /> <option name="autoDownloadKobalt" value="true" />
<option name="externalProjectPath" value="$PROJECT_DIR$/example" /> <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" /> <option name="useAutoImport" value="true" />
</KobaltProjectSettings> </KobaltProjectSettings>
</option> </option>

View file

@ -37,7 +37,7 @@ val p = project {
} }
exec { exec {
commandLine(args = arrayOf("ls", "-- a"), dir = "../libs", fail = arrayOf(Fail.EXIT)) commandLine(args = listOf("ls", "-- a"), dir = "../libs", fail = setOf(Fail.STDERR, Fail.EXIT))
commandLine(arrayOf("cmd", "/c", "echo", "Test"), os = arrayOf("Win"), fail = arrayOf(Fail.STDERR)) commandLine(listOf("cmd", "/c", "echo", "Test"), os = listOf("Win"), fail = setOf(Fail.STDERR, Fail.EXIT))
} }
} }

View file

@ -25,9 +25,9 @@
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library" scope="TEST"> <orderEntry type="module-library" scope="TEST">
<library name="Kobalt: org.testng:testng:jar:(0,]"> <library name="Kobalt: com.beust:jcommander:jar:1.48">
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />
@ -43,9 +43,9 @@
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="module-library" scope="TEST"> <orderEntry type="module-library" scope="TEST">
<library name="Kobalt: com.beust:jcommander:jar:1.48"> <library name="Kobalt: org.testng:testng:jar:(0,]">
<CLASSES> <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> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <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) pb.directory(loc)
val proc = pb.start() val proc = pb.start()
val err = proc.waitFor(30, TimeUnit.SECONDS) val err = proc.waitFor(30, TimeUnit.SECONDS)
val stdin = if (proc.inputStream.available() > 0) fromStream(proc.inputStream) 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 listOf() val stderr = if (proc.errorStream.available() > 0) fromStream(proc.errorStream) else emptyList()
val errMsg = "Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): "
if (err == false) { if (err == false) {
error("Cannot run program \"" + it.args.joinToString(" ") error(errMsg + "TIMEOUT")
+ "\" (in directory \"$dir\"): TIMEOUT") } else if (it.fail.isNotEmpty()) {
} else if (it.fail.contains(Fail.EXIT) && proc.exitValue() > 0) { val all = it.fail.contains(Fail.ALL)
error("Program \"" + it.args.joinToString(" ") val output = it.fail.contains(Fail.OUTPUT)
+ "\" (in directory \"$dir\"): EXIT ${proc.exitValue()}") if ((all || it.fail.contains(Fail.EXIT)) && proc.exitValue() > 0) {
} else if (it.fail.contains(Fail.STDERR) && stderr.isNotEmpty()) { error(errMsg + "EXIT ${proc.exitValue()}")
error("Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): STDERR, " } else if ((all || output || it.fail.contains(Fail.STDERR)) && stderr.isNotEmpty()) {
+ stderr[0] + "...") error(errMsg + "STDERR, " + stderr[0])
} else if (it.fail.contains(Fail.STDIN) && stdin.isNotEmpty()) { } else if ((all || output || it.fail.contains(Fail.STDOUT)) && stdout.isNotEmpty()) {
error("Program \"" + it.args.joinToString(" ") + "\" (in directory \"$dir\"): STDIN, " error(errMsg + "STDOUT, " + stdout[0])
+ stdin[0] + "...") }
} }
success = true success = true
@ -133,18 +135,18 @@ class ExecPlugin : BasePlugin(), ITaskContributor {
} }
enum class Fail() { enum class Fail() {
STDERR, STDIN, EXIT ALL, STDERR, STDOUT, OUTPUT, EXIT
} }
data class CommandLine(var args: Array<String> = emptyArray(), var dir: String = "", data class CommandLine(var args: List<String> = emptyList(), var dir: String = "",
var os: Array<String> = emptyArray(), var fail: Array<Fail> = emptyArray()) var os: List<String> = emptyList(), var fail: Set<Fail> = emptySet())
data class ExecConfig(val project: Project) { data class ExecConfig(val project: Project) {
val commandLines = arrayListOf<CommandLine>() val commandLines = arrayListOf<CommandLine>()
@Directive @Directive
public fun commandLine(args: Array<String> = emptyArray(), dir: String = "", os: Array<String> = emptyArray(), public fun commandLine(args: List<String> = emptyList(), dir: String = "", os: List<String> = emptyList(),
fail: Array<Fail> = emptyArray()) { fail: Set<Fail> = emptySet()) {
if (args.size > 0) commandLines.add(CommandLine(args, dir, os, fail)) if (args.size > 0) commandLines.add(CommandLine(args, dir, os, fail))
} }
} }