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