unit-tests: Return -1 as an exit code if tests failed

This commit is contained in:
Ilya Matveev
2017-09-18 16:14:20 +03:00
committed by ilmat192
parent 1e5a27505a
commit 2365df60bb
2 changed files with 35 additions and 26 deletions
+28 -2
View File
@@ -1,5 +1,31 @@
package konan.test
fun main(args:Array<String>) {
TestRunner.run()
import kotlin.system.exitProcess
class SimpleTestListener: TestListener {
var hasFails = false
private set
override fun startTesting(runner: TestRunner) = println("Starting testing")
override fun endTesting(runner: TestRunner) = println("Testing finished")
override fun startSuite(suite: TestSuite) = println("Starting test suite: $suite")
override fun endSuite(suite: TestSuite) = println("Test suite finished: $suite")
override fun ignoreSuite(suite: TestSuite) = println("Test suite ignored: $suite")
override fun start(testCase: TestCase) = println("Starting test case: $testCase")
override fun pass(testCase: TestCase) = println("Passed: $testCase")
override fun fail(testCase: TestCase, e: Throwable) {
println("Failed: $testCase. Exception:")
e.printStackTrace()
hasFails = true
}
override fun ignore(testCase: TestCase) = println("Ignore: $testCase")
}
fun main(args:Array<String>) {
val listener = SimpleTestListener()
TestRunner.run(listener)
exitProcess( if (listener.hasFails) -1 else 0 )
}
@@ -2,23 +2,6 @@ package konan.test
object TestRunner {
object SimpleTestListener: TestListener {
override fun startTesting(runner: TestRunner) = println("Starting testing")
override fun endTesting(runner: TestRunner) = println("Testing finished")
override fun startSuite(suite: TestSuite) = println("Starting test suite: $suite")
override fun endSuite(suite: TestSuite) = println("Test suite finished: $suite")
override fun ignoreSuite(suite: TestSuite) = println("Test suite ignored: $suite")
override fun start(testCase: TestCase) = println("Starting test case: $testCase")
override fun pass(testCase: TestCase) = println("Passed: $testCase")
override fun fail(testCase: TestCase, e: Throwable) {
println("Failed: $testCase. Exception:")
e.printStackTrace()
}
override fun ignore(testCase: TestCase) = println("Ignore: $testCase")
}
private val _suites = mutableListOf<TestSuite>()
val suites: Collection<TestSuite> get() = _suites
@@ -26,18 +9,18 @@ object TestRunner {
fun register(suites: Iterable<TestSuite>) = _suites.addAll(suites)
fun register(vararg suites: TestSuite) = _suites.addAll(suites)
fun run() {
SimpleTestListener.startTesting(this)
fun run(listener: TestListener) = with(listener) {
startTesting(this@TestRunner)
suites.forEach {
if (it.ignored) {
SimpleTestListener.ignoreSuite(it)
ignoreSuite(it)
} else {
SimpleTestListener.startSuite(it)
it.run(SimpleTestListener)
SimpleTestListener.endSuite(it)
startSuite(it)
it.run(listener)
endSuite(it)
}
}
SimpleTestListener.endTesting(this)
endTesting(this@TestRunner)
}
}