[JS] Implement strategy with adapterTransformer on global object to mutate adapter of kotlin-test

This commit is contained in:
Ilya Goncharov
2021-11-08 20:47:28 +03:00
committed by Space
parent 272081d8cf
commit 7aef45d5cf
4 changed files with 62 additions and 45 deletions
@@ -65,11 +65,26 @@ internal fun adapter(): FrameworkAdapter {
return result
}
@JsName("kotlinTest")
external val kotlinTestNamespace: KotlinTestNamespace
internal fun detectAdapter() = when {
isQUnit() -> QUnitAdapter()
isJasmine() -> JasmineLikeAdapter()
else -> BareAdapter()
external interface KotlinTestNamespace {
val adapterTransformer: ((FrameworkAdapter) -> FrameworkAdapter)?
}
internal fun detectAdapter(): FrameworkAdapter {
val frameworkAdapter = when {
isQUnit() -> QUnitAdapter()
isJasmine() -> JasmineLikeAdapter()
else -> BareAdapter()
}
return if (jsTypeOf(kotlinTestNamespace) != "undefined") {
val adapterTransform = kotlinTestNamespace
.adapterTransformer
if (adapterTransform !== null) {
adapterTransform(frameworkAdapter)
} else frameworkAdapter
} else frameworkAdapter
}
internal val NAME_TO_ADAPTER: Map<String, () -> FrameworkAdapter> = mapOf(