1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 00:17:11 -07:00

TestNG runner work in progress.

This commit is contained in:
Cedric Beust 2017-03-19 09:06:26 -07:00
parent 3ee309fa37
commit a3734f88c3
2 changed files with 84 additions and 1 deletions

View file

@ -94,7 +94,7 @@ abstract class GenericTestRunner: ITestRunnerContributor {
/**
* @return true if all the tests passed
*/
fun runTests(project: Project, context: KobaltContext, classpath: List<IClasspathDependency>,
open fun runTests(project: Project, context: KobaltContext, classpath: List<IClasspathDependency>,
configName: String) : Boolean {
var result = false

View file

@ -4,9 +4,17 @@ import com.beust.kobalt.TestConfig
import com.beust.kobalt.api.IClasspathDependency
import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.Project
import com.beust.kobalt.homeDir
import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.runCommand
import com.beust.kobalt.misc.warn
import org.testng.remote.RemoteArgs
import org.testng.remote.strprotocol.JsonMessageSender
import org.testng.remote.strprotocol.MessageHelper
import org.testng.remote.strprotocol.MessageHub
import org.testng.remote.strprotocol.TestResultMessage
import java.io.File
import java.io.IOException
class TestNgRunner : GenericTestRunner() {
@ -48,4 +56,79 @@ class TestNgRunner : GenericTestRunner() {
addAll(testConfig.testArgs)
}
}
fun _runTests(project: Project, context: KobaltContext, classpath: List<IClasspathDependency>,
configName: String): Boolean {
var result = false
val port = 2345
val classpath = listOf(homeDir("java/jcommander/kobaltBuild/classes"),
homeDir(".kobalt/cache/org/testng/testng/6.10/testng-6.10.jar"),
homeDir(".kobalt/cache/com/beust/jcommander/1.66/jcommander-1.66.jar"),
homeDir(".kobalt/cache/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar"),
homeDir(".kobalt/cache/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar"),
homeDir("java/jcommander/kobaltBuild/test-classes"),
homeDir("java/jcommander/src/test/resources/testng.xml"),
homeDir("kotlin/kobalt/lib/testng-remote-1.3.0-SNAPSHOT.jar"),
homeDir("kotlin/kobalt/lib/testng-remote6_10-1.3.0-SNAPSHOT.jar")
).joinToString(File.pathSeparator)
val passedArgs = listOf(
"-classpath",
classpath,
"org.testng.remote.RemoteTestNG",
"-serport", port.toString(),
"-version", "6.10",
"-dontexit",
RemoteArgs.PROTOCOL,
"json",
"src/test/resources/testng.xml")
Thread {
val exitCode = runCommand {
command = "java"
directory = File(homeDir("java/jcommander"))
args = passedArgs
}
}.start()
// Thread {
// val args2 = arrayOf("-serport", port.toString(), "-dontexit", RemoteArgs.PROTOCOL, "json",
// "-version", "6.10",
// "src/test/resources/testng.xml")
// RemoteTestNG.main(args2)
// }.start()
val mh = MessageHub(JsonMessageSender("localhost", port, true))
mh.setDebug(true)
mh.initReceiver()
val passed = arrayListOf<String>()
data class FailedTest(val method: String, val cls: String, val stackTrace: String)
val failed = arrayListOf<FailedTest>()
var skipped = arrayListOf<String>()
try {
var message = mh.receiveMessage()
println("")
while (message != null) {
message = mh.receiveMessage()
if (message is TestResultMessage) {
when(message.result) {
MessageHelper.PASSED_TEST -> passed.add(message.name)
MessageHelper.FAILED_TEST -> failed.add(FailedTest(message.testClass,
message.method, message.stackTrace))
MessageHelper.SKIPPED_TEST -> skipped.add(message.name)
}
}
print("\r" + String.format("%4d / %4d / %4d", passed.size, failed.size, skipped.size))
// Thread.sleep(200)
}
} catch(ex: IOException) {
println("Exception: ${ex.message}")
}
println("\nPassed: " + passed.size + ", Failed: " + failed.size + ", Skipped: " + skipped.size)
failed.forEach {
val top = it.stackTrace.substring(0, it.stackTrace.indexOf("\n"))
println(" " + it.cls + "." + it.method + "\n " + top)
}
return result
}
}