diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 7e6c0f1f9dd..e131ad10f57 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME import org.jetbrains.kotlin.library.KLIB_PROPERTY_UNIQUE_NAME import org.junit.Assert +import org.junit.Ignore import org.junit.Test import java.util.* import java.util.jar.JarFile @@ -1955,6 +1956,30 @@ class NewMultiplatformIT : BaseGradleIT() { } } + private fun testWasmTest(engine: String, name: String) = with( + Project("new-mpp-wasm-test", gradleVersionRequirement = GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_0)) + ) { + setupWorkingDir() + gradleBuildScript().modify { + transformBuildScriptWithPluginsDsl(it) + .replace("", engine) + } + build(":wasm${name}Test") { + assertTasksExecuted(":compileKotlinWasm") + assertTasksFailed(":wasm${name}Test") + assertTestResults( + "testProject/new-mpp-wasm-test/TEST-${engine}.xml", + "wasm${name}Test" + ) + } + } + + @Test + fun testWasmNodeTest() = testWasmTest("nodejs", "Node") + + @Test + fun testWasmD8Test() = testWasmTest("d8", "D8") + @Test fun testResolveMetadataCompileClasspathKt50925() { Project("lib", directoryPrefix = "kt-50925-resolve-metadata-compile-classpath").apply { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-d8.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-d8.xml new file mode 100644 index 00000000000..de27e87dead --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-d8.xml @@ -0,0 +1,32 @@ + + + + + + ... + + + + + + ... + + + + + + + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-nodejs.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-nodejs.xml new file mode 100644 index 00000000000..3255a20757d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/TEST-nodejs.xml @@ -0,0 +1,32 @@ + + + + + + ... + + + + + + ... + + + + + + + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts new file mode 100644 index 00000000000..d8f48a09450 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts @@ -0,0 +1,39 @@ +plugins { + kotlin("multiplatform").version("") +} + +repositories { + mavenLocal() + mavenCentral() +} + +with(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.apply(rootProject)) { + //nightly nodejs that supports wasm M5 + nodeVersion = "19.0.0-nightly202206017ad5b420ae" + nodeDownloadBaseUrl = "https://nodejs.org/download/nightly/" +} + +with(org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin.apply(rootProject)) { + //A little hacky way to disable yarn for unsupported nightly node version + command = "echo" + download = false +} + +tasks.named("kotlinStoreYarnLock") { + //A little hacky way to make yarn results + inputFile.fileValue(projectDir.resolve("yarnLockStub")) +} + +kotlin { + wasm { + () + } + + sourceSets { + commonTest { + dependencies { + implementation("org.jetbrains.kotlin:kotlin-test") + } + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/settings.gradle.kts new file mode 100644 index 00000000000..a458b687b21 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "new-mpp-wasm-node-test" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmMain/kotlin/foo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmMain/kotlin/foo.kt new file mode 100644 index 00000000000..73880e2f2b0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmMain/kotlin/foo.kt @@ -0,0 +1,3 @@ +package my.pack.name + +fun foo(): Int = 2 \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt new file mode 100644 index 00000000000..6c141257f96 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt @@ -0,0 +1,30 @@ +package my.pack.name + +import kotlin.test.Ignore +import kotlin.test.Test +import kotlin.test.assertEquals + +class WasmTest { + @Test + fun test1() = assertEquals(foo(), 1) + + @Test + @Ignore + fun test2() = assertEquals(foo(), 2) + + @Test + fun test3() = assertEquals(foo(), 3) + + @Ignore + class InnerIgnored { + @Test + fun test4() = assertEquals(foo(), 1) + + @Test + @Ignore + fun test5() = assertEquals(foo(), 2) + + @Test + fun test6() = assertEquals(foo(), 3) + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/yarnLockStub b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/yarnLockStub new file mode 100644 index 00000000000..e69de29bb2d