[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.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.modify
import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.DisplayName
import java.nio.file.Files import java.nio.file.Files
import kotlin.io.path.writeText
import kotlin.test.assertTrue import kotlin.test.assertTrue
@MppGradlePluginTests @MppGradlePluginTests
@@ -26,6 +28,10 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
assertTasksExecuted(":wasmWasiNodeTest") assertTasksExecuted(":wasmWasiNodeTest")
} }
build(":wasmWasiTest") {
assertTasksUpToDate(":kotlinNodeJsSetup", ":compileKotlinWasmWasi", ":wasmWasiNodeTest")
}
projectPath.resolve("src/wasmWasiTest/kotlin/Test.kt").modify { projectPath.resolve("src/wasmWasiTest/kotlin/Test.kt").modify {
it.replace( it.replace(
"fun test2() = assertEquals(foo(), 2)", "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") @DisplayName("Check wasi target run")
@GradleTest @GradleTest
fun wasiRun(gradleVersion: GradleVersion) { fun wasiRun(gradleVersion: GradleVersion) {
@@ -72,7 +118,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() {
} }
} }
@DisplayName("Check wasi target") @DisplayName("Check wasi target with binaryen")
@GradleTest @GradleTest
fun wasiTargetWithBinaryen(gradleVersion: GradleVersion) { fun wasiTargetWithBinaryen(gradleVersion: GradleVersion) {
project("new-mpp-wasm-wasi-test", 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 @GradleTest
fun jsTargetWithBinaryen(gradleVersion: GradleVersion) { fun jsTargetWithBinaryen(gradleVersion: GradleVersion) {
project("new-mpp-wasm-js", gradleVersion) { project("new-mpp-wasm-js", gradleVersion) {
@@ -61,11 +61,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureDefaultTestFramework(test: KotlinJsTest) { override fun configureDefaultTestFramework(test: KotlinJsTest) {
if (test.testFramework == null) { if (test.testFramework == null) {
test.useKarma { test.useKarma {
if (compilation.platformType == KotlinPlatformType.wasm) { useChromeHeadless()
useChromeHeadlessWasmGc()
} else {
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.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
import org.jetbrains.kotlin.gradle.utils.getValue import org.jetbrains.kotlin.gradle.utils.getValue
import java.nio.file.Path import java.nio.file.Path
@@ -36,10 +35,6 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe
override val workingDir: Path override val workingDir: Path
get() = npmProjectDir.toPath() get() = npmProjectDir.toPath()
init {
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
}
override fun createTestExecutionSpec( override fun createTestExecutionSpec(
task: KotlinJsTest, task: KotlinJsTest,
forkOptions: ProcessForkOptions, 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.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
import org.jetbrains.kotlin.gradle.utils.getValue import org.jetbrains.kotlin.gradle.utils.getValue
import java.nio.file.Path import java.nio.file.Path
@@ -45,10 +44,6 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs
kotlinJsTest.inputFileProperty.get().asFile.toPath().parent kotlinJsTest.inputFileProperty.get().asFile.toPath().parent
} }
init {
kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM")
}
override fun createTestExecutionSpec( override fun createTestExecutionSpec(
task: KotlinJsTest, task: KotlinJsTest,
forkOptions: ProcessForkOptions, forkOptions: ProcessForkOptions,
@@ -37,7 +37,7 @@ data class KarmaClient(
val args: MutableList<String> = mutableListOf() val args: MutableList<String> = mutableListOf()
) )
class CustomLauncher(var base: String) { data class CustomLauncher(var base: String) {
val flags = mutableListOf<String>() val flags = mutableListOf<String>()
var debug: Boolean? = null var debug: Boolean? = null
} }
@@ -201,6 +201,7 @@ class KotlinKarma(
fun useChromeCanaryHeadless() = useChromeLike("ChromeCanaryHeadless") fun useChromeCanaryHeadless() = useChromeLike("ChromeCanaryHeadless")
@Deprecated("Chrome supports wasm GC by default, so you can use useChromeHeadless", replaceWith = ReplaceWith("useChromHeadless"))
fun useChromeHeadlessWasmGc() { fun useChromeHeadlessWasmGc() {
val chromeCanaryHeadlessWasmGc = "ChromeHeadlessWasmGc" val chromeCanaryHeadlessWasmGc = "ChromeHeadlessWasmGc"