KT-22807: allow asynchronous testing in Kotlin/JS with QUnit
This commit is contained in:
@@ -1,12 +1,6 @@
|
||||
var Tester = require('./test-result-checker');
|
||||
|
||||
var full = require('./expected-outcomes');
|
||||
var allAsyncPass = {};
|
||||
for (var name in full) {
|
||||
allAsyncPass[name] = name.startsWith('AsyncTest ') ? 'pass' : full[name];
|
||||
}
|
||||
|
||||
var tester = new Tester(allAsyncPass, 'qunit');
|
||||
var expectedOutcomes = require('./expected-outcomes');
|
||||
var tester = new Tester(expectedOutcomes, 'qunit');
|
||||
|
||||
QUnit.testDone(function (details) {
|
||||
var testName = (details.module.replace('> ', '') + ' ' + details.name).trim();
|
||||
|
||||
@@ -38,5 +38,5 @@ public external interface FrameworkAdapter {
|
||||
* @param ignored whether the test is ignored
|
||||
* @param testFn contains test body invocation
|
||||
*/
|
||||
fun test(name: String, ignored: Boolean, testFn: () -> Unit)
|
||||
fun test(name: String, ignored: Boolean, testFn: () -> Any)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ internal open class BareAdapter : FrameworkAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Unit) {
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Any) {
|
||||
if (!ignored) {
|
||||
testFn()
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ package kotlin.test.adapters
|
||||
*/
|
||||
internal external object QUnit {
|
||||
fun module(name: String, suiteFn: () -> Unit): Unit
|
||||
fun test(name: String, testFn: (dynamic) -> Unit): Unit
|
||||
fun skip(name: String, testFn: (dynamic) -> Unit): Unit
|
||||
fun test(name: String, testFn: (dynamic) -> Any): Unit
|
||||
fun skip(name: String, testFn: (dynamic) -> Any): Unit
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -20,8 +20,8 @@ internal external object QUnit {
|
||||
|
||||
internal external fun describe(name: String, fn: () -> Unit)
|
||||
internal external fun xdescribe(name: String, fn: () -> Unit)
|
||||
internal external fun it(name: String, fn: () -> Unit)
|
||||
internal external fun xit(name: String, fn: () -> Unit)
|
||||
internal external fun it(name: String, fn: () -> Any)
|
||||
internal external fun xit(name: String, fn: () -> Any)
|
||||
|
||||
internal fun isQUnit() = jsTypeOf(QUnit) !== "undefined"
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ internal class JasmineLikeAdapter : FrameworkAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Unit) {
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Any) {
|
||||
if (ignored) {
|
||||
xit(name, testFn)
|
||||
} else {
|
||||
|
||||
@@ -22,7 +22,7 @@ internal class QUnitAdapter : FrameworkAdapter {
|
||||
ignoredSuite = prevIgnore
|
||||
}
|
||||
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Unit) {
|
||||
override fun test(name: String, ignored: Boolean, testFn: () -> Any) {
|
||||
if (ignored or ignoredSuite) {
|
||||
QUnit.skip(name, wrapTest(testFn))
|
||||
} else {
|
||||
@@ -30,15 +30,16 @@ internal class QUnitAdapter : FrameworkAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
private fun wrapTest(testFn: () -> Unit): (dynamic) -> Unit = { assert ->
|
||||
private fun wrapTest(testFn: () -> Any): (dynamic) -> Any = { assert ->
|
||||
var assertionsHappened = false
|
||||
assertHook = { testResult ->
|
||||
assertionsHappened = true
|
||||
assert.ok(testResult.result, testResult.lazyMessage())
|
||||
}
|
||||
testFn()
|
||||
val possiblePromise = testFn()
|
||||
if (!assertionsHappened) {
|
||||
assertTrue(true, "A test with no assertions is considered successful")
|
||||
}
|
||||
possiblePromise
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user