[Gradle, Wasm] Tests can be up-to-date, and use by default chrome headless

^KT-62633 fixed
This commit is contained in:
Ilya Goncharov
2023-11-14 17:58:42 +00:00
committed by Space Team
parent b2fb37043d
commit 405a502675
6 changed files with 51 additions and 18 deletions
@@ -7,8 +7,10 @@ package org.jetbrains.kotlin.gradle
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.modify
import org.junit.jupiter.api.DisplayName
import java.nio.file.Files
import kotlin.io.path.writeText
import kotlin.test.assertTrue
@MppGradlePluginTests
@@ -26,6 +28,10 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
assertTasksExecuted(":wasmWasiNodeTest")
}
build(":wasmWasiTest") {
assertTasksUpToDate(":kotlinNodeJsSetup", ":compileKotlinWasmWasi", ":wasmWasiNodeTest")
}
projectPath.resolve("src/wasmWasiTest/kotlin/Test.kt").modify {
it.replace(
"fun test2() = assertEquals(foo(), 2)",
@@ -44,6 +50,46 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
}
}
@DisplayName("Check js target")
@GradleTest
fun jsTarget(gradleVersion: GradleVersion) {
project("new-mpp-wasm-test", gradleVersion) {
buildGradleKts.modify {
transformBuildScriptWithPluginsDsl(it)
.replace("<JsEngine>", "nodejs")
.replace("<ApplyBinaryen>", "")
}
kotlinSourcesDir("wasmJsTest").resolve("Test.kt").writeText(
"""
package my.pack.name
import kotlin.test.Test
import kotlin.test.assertEquals
class WasmTest {
@Test
fun test1() = assertEquals(foo(), 2)
}
""".trimIndent()
)
projectPath.resolve(".yarnrc").toFile().writeText(
"--ignore-engines true"
)
build("build") {
assertTasksExecuted(":kotlinNodeJsSetup")
assertTasksExecuted(":compileKotlinWasmJs")
assertTasksExecuted(":wasmJsNodeTest")
}
build(":wasmJsTest") {
assertTasksUpToDate(":kotlinNodeJsSetup", ":compileKotlinWasmJs", ":wasmJsNodeTest")
}
}
}
@DisplayName("Check wasi target run")
@GradleTest
fun wasiRun(gradleVersion: GradleVersion) {
@@ -72,7 +118,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
}
}
@DisplayName("Check wasi target")
@DisplayName("Check wasi target with binaryen")
@GradleTest
fun wasiTargetWithBinaryen(gradleVersion: GradleVersion) {
project("new-mpp-wasm-wasi-test", gradleVersion) {
@@ -96,7 +142,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
}
}
@DisplayName("Check js target")
@DisplayName("Check js target with binaryen")
@GradleTest
fun jsTargetWithBinaryen(gradleVersion: GradleVersion) {
project("new-mpp-wasm-js", gradleVersion) {
@@ -61,11 +61,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureDefaultTestFramework(test: KotlinJsTest) {
if (test.testFramework == null) {
test.useKarma {
if (compilation.platformType == KotlinPlatformType.wasm) {
useChromeHeadlessWasmGc()
} else {
useChromeHeadless()
}
useChromeHeadless()
}
}
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJv
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
import org.jetbrains.kotlin.gradle.utils.getValue
import java.nio.file.Path
@@ -36,10 +35,6 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe
override val workingDir: Path
get() = npmProjectDir.toPath()
init {
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
}
override fun createTestExecutionSpec(
task: KotlinJsTest,
forkOptions: ProcessForkOptions,
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
import org.jetbrains.kotlin.gradle.utils.getValue
import java.nio.file.Path
@@ -45,10 +44,6 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs
kotlinJsTest.inputFileProperty.get().asFile.toPath().parent
}
init {
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
}
override fun createTestExecutionSpec(
task: KotlinJsTest,
forkOptions: ProcessForkOptions,
@@ -37,7 +37,7 @@ data class KarmaClient(
val args: MutableList<String> = mutableListOf()
)
class CustomLauncher(var base: String) {
data class CustomLauncher(var base: String) {
val flags = mutableListOf<String>()
var debug: Boolean? = null
}
@@ -201,6 +201,7 @@ class KotlinKarma(
fun useChromeCanaryHeadless() = useChromeLike("ChromeCanaryHeadless")
@Deprecated("Chrome supports wasm GC by default, so you can use useChromeHeadless", replaceWith = ReplaceWith("useChromHeadless"))
fun useChromeHeadlessWasmGc() {
val chromeCanaryHeadlessWasmGc = "ChromeHeadlessWasmGc"