[Wasm] Teach gradle plugin to run wasm unit tests for nodejs and Mocha
This commit is contained in:
+15
@@ -10,6 +10,7 @@ import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.Copy
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl
|
||||
@@ -269,6 +270,20 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
||||
KotlinJsBinaryMode.DEVELOPMENT -> debugValue
|
||||
}
|
||||
|
||||
override fun addLinkOptions(compilation: KotlinJsIrCompilation) {
|
||||
if (compilation.platformType != KotlinPlatformType.wasm)
|
||||
return
|
||||
|
||||
// Wasm requires different kinds of launchers for browser and nodejs. This might change in the future.
|
||||
compilation.binaries
|
||||
.withType(JsIrBinary::class.java)
|
||||
.all {
|
||||
it.linkTask.configure { linkTask ->
|
||||
linkTask.kotlinOptions.freeCompilerArgs += "-Xwasm-launcher=esm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val WEBPACK_TASK_NAME = "webpack"
|
||||
}
|
||||
|
||||
+4
@@ -107,6 +107,8 @@ abstract class KotlinJsIrSubTarget(
|
||||
}
|
||||
}
|
||||
|
||||
abstract fun addLinkOptions(compilation: KotlinJsIrCompilation)
|
||||
|
||||
private fun configureTestsRun(testRun: KotlinJsPlatformTestRun, compilation: KotlinJsIrCompilation) {
|
||||
fun KotlinJsPlatformTestRun.subtargetTestTaskName(): String = disambiguateCamelCased(
|
||||
lowerCamelCaseName(
|
||||
@@ -115,6 +117,8 @@ abstract class KotlinJsIrSubTarget(
|
||||
)
|
||||
)
|
||||
|
||||
addLinkOptions(compilation)
|
||||
|
||||
val testJs = project.registerTask<KotlinJsTest>(
|
||||
testRun.subtargetTestTaskName(),
|
||||
listOf(compilation)
|
||||
|
||||
+15
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
|
||||
@@ -100,4 +101,18 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
||||
configureRun(binary)
|
||||
}
|
||||
}
|
||||
|
||||
override fun addLinkOptions(compilation: KotlinJsIrCompilation) {
|
||||
if (compilation.platformType != KotlinPlatformType.wasm)
|
||||
return
|
||||
|
||||
// Wasm requires different kinds of launchers for browser and nodejs. This might change in the future.
|
||||
compilation.binaries
|
||||
.withType(JsIrBinary::class.java)
|
||||
.all {
|
||||
it.linkTask.configure { linkTask ->
|
||||
linkTask.kotlinOptions.freeCompilerArgs += "-Xwasm-launcher=nodejs"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -10,6 +10,7 @@ import org.gradle.process.ProcessForkOptions
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor.Companion.TC_PROJECT_PROPERTY
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||
@@ -94,6 +95,9 @@ class KotlinMocha(@Transient override val compilation: KotlinJsCompilation, priv
|
||||
} else {
|
||||
addAll(cliArg(TIMEOUT_ARG, timeout))
|
||||
}
|
||||
if (compilation.platformType == KotlinPlatformType.wasm) {
|
||||
addAll(cliArg("-n", "experimental-wasm-typed-funcref,experimental-wasm-gc,experimental-wasm-eh"))
|
||||
}
|
||||
}
|
||||
|
||||
return TCServiceMessagesTestExecutionSpec(
|
||||
|
||||
Reference in New Issue
Block a user