unit-tests: Return -1 as an exit code if tests failed
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user