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 package konan.test
fun main(args:Array<String>) { import kotlin.system.exitProcess
TestRunner.run()
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 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>() private val _suites = mutableListOf<TestSuite>()
val suites: Collection<TestSuite> get() = _suites val suites: Collection<TestSuite> get() = _suites
@@ -26,18 +9,18 @@ object TestRunner {
fun register(suites: Iterable<TestSuite>) = _suites.addAll(suites) fun register(suites: Iterable<TestSuite>) = _suites.addAll(suites)
fun register(vararg suites: TestSuite) = _suites.addAll(suites) fun register(vararg suites: TestSuite) = _suites.addAll(suites)
fun run() { fun run(listener: TestListener) = with(listener) {
SimpleTestListener.startTesting(this) startTesting(this@TestRunner)
suites.forEach { suites.forEach {
if (it.ignored) { if (it.ignored) {
SimpleTestListener.ignoreSuite(it) ignoreSuite(it)
} else { } else {
SimpleTestListener.startSuite(it) startSuite(it)
it.run(SimpleTestListener) it.run(listener)
SimpleTestListener.endSuite(it) endSuite(it)
} }
} }
SimpleTestListener.endTesting(this) endTesting(this@TestRunner)
} }
} }