[Wasm] Stop using Dynamic in kotlin-test

This commit is contained in:
Svyatoslav Kuzmich
2023-03-20 16:37:27 +01:00
committed by Space Team
parent 1071669a92
commit 635671d623
3 changed files with 14 additions and 15 deletions
@@ -21,15 +21,15 @@ private fun it(name: String, fn: () -> JsAny?): Unit =
private fun xit(name: String, fn: () -> JsAny?): Unit = private fun xit(name: String, fn: () -> JsAny?): Unit =
js("xit(name, fn)") js("xit(name, fn)")
private fun jsThrow(jsException: Dynamic) { private fun jsThrow(jsException: JsAny) {
js("throw e") js("throw e")
} }
private fun throwableToJsError(message: String, stack: String): Dynamic { private fun throwableToJsError(message: String, stack: String): JsAny {
js("var e = new Error(); e.message = message; e.stack = stack; return e;") js("var e = new Error(); e.message = message; e.stack = stack; return e;")
} }
private fun Throwable.toJsError(): Dynamic = private fun Throwable.toJsError(): JsAny =
throwableToJsError(message ?: "", stackTraceToString()) throwableToJsError(message ?: "", stackTraceToString())
/** /**
@@ -52,7 +52,7 @@ internal class JasmineLikeAdapter : FrameworkAdapter {
.toThrowableOrNull() .toThrowableOrNull()
?.let { it.toJsError() } ?.let { it.toJsError() }
?: exception ?: exception
Promise.reject(jsException) as Dynamic Promise.reject(jsException)
} }
} catch (exception: Throwable) { } catch (exception: Throwable) {
jsThrow(exception.toJsError()) jsThrow(exception.toJsError())
@@ -17,7 +17,7 @@ private external fun nodeArguments(): String
internal class TeamcityAdapter : FrameworkAdapter { internal class TeamcityAdapter : FrameworkAdapter {
private var scheduleNextTaskAfter: Promise<Dynamic?>? = null private var scheduleNextTaskAfter: Promise<JsAny?>? = null
private fun runOrScheduleNext(block: () -> Unit) { private fun runOrScheduleNext(block: () -> Unit) {
if (scheduleNextTaskAfter == null) { if (scheduleNextTaskAfter == null) {
block() block()
@@ -26,14 +26,14 @@ internal class TeamcityAdapter : FrameworkAdapter {
} }
} }
private fun runOrScheduleNextWithResult(block: () -> Promise<Dynamic?>?) { private fun runOrScheduleNextWithResult(block: () -> Promise<JsAny?>?) {
if (scheduleNextTaskAfter == null) { if (scheduleNextTaskAfter == null) {
val result = block() val result = block()
if (result != null) if (result != null)
scheduleNextTaskAfter = result scheduleNextTaskAfter = result
} else { } else {
scheduleNextTaskAfter = scheduleNextTaskAfter!!.then { scheduleNextTaskAfter = scheduleNextTaskAfter!!.then {
block() as Dynamic? block()
} }
} }
} }
+7 -8
View File
@@ -3,19 +3,19 @@ package test.js
import kotlin.js.* import kotlin.js.*
import kotlin.test.* import kotlin.test.*
internal fun jsAsyncFoo(): Promise<Dynamic?> = internal fun jsAsyncFoo(): Promise<JsAny?> =
js("(async () => 'foo')()") js("(async () => 'foo')()")
internal fun jsFoo(): Dynamic = internal fun jsFoo(): JsAny =
js("'foo'") js("'foo'")
var state: Dynamic? = null var state: JsAny? = null
class MyThrowable : Throwable() class MyThrowable : Throwable()
class AsyncTest { class AsyncTest {
@Test @Test
fun test1(): Promise<Dynamic?> { fun test1(): Promise<JsAny?> {
var thenExecuted = false var thenExecuted = false
val p = jsAsyncFoo().then { value -> val p = jsAsyncFoo().then { value ->
state = value state = value
@@ -27,7 +27,7 @@ class AsyncTest {
} }
@Test @Test
fun test2(): Promise<Dynamic?> { fun test2(): Promise<JsAny?> {
assertEquals(state, jsFoo()) assertEquals(state, jsFoo())
var thenExecuted = false var thenExecuted = false
val p = jsAsyncFoo().then { val p = jsAsyncFoo().then {
@@ -44,10 +44,9 @@ class AsyncTest {
} }
@Test @Test
fun testJsValueToThrowableOrNull1(): Promise<Dynamic?> { fun testJsValueToThrowableOrNull1(): Promise<JsAny?> {
val p = jsAsyncFoo().then { val p = jsAsyncFoo().then {
throw MyThrowable() throw MyThrowable()
null
}.catch { e -> }.catch { e ->
assert(e.toThrowableOrNull() is MyThrowable) assert(e.toThrowableOrNull() is MyThrowable)
null null
@@ -58,6 +57,6 @@ class AsyncTest {
@Test @Test
fun testJsValueToThrowableOrNull2() { fun testJsValueToThrowableOrNull2() {
val e = MyThrowable() val e = MyThrowable()
assertEquals((e as Dynamic).toThrowableOrNull(), e) assertEquals((e.toJsHandle()).toThrowableOrNull(), e)
} }
} }