[Gradle, Wasm] Tests can be up-to-date, and use by default chrome headless
^KT-62633 fixed
This commit is contained in:
committed by
Space Team
parent
b2fb37043d
commit
405a502675
+48
-2
@@ -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) {
|
||||||
|
|||||||
+1
-5
@@ -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()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-5
@@ -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,
|
||||||
|
|||||||
-5
@@ -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,
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -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"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user