From 40f5663a572f139a6787a5fecd2fce27cfb826f9 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 30 Jan 2020 15:39:13 +0300 Subject: [PATCH] [Gradle, JS] Fix associated compilations test and adopt to js ir --- .../kotlin/gradle/NewMultiplatformIT.kt | 75 ++++++++++++------- 1 file changed, 48 insertions(+), 27 deletions(-) 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 83dbc2d74df..376a8365e9b 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 @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel import org.jdom.input.SAXBuilder import org.jetbrains.kotlin.gradle.internals.* +import org.jetbrains.kotlin.gradle.plugin.JsMode import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin @@ -2220,37 +2221,57 @@ class NewMultiplatformIT : BaseGradleIT() { } @Test - fun testAssociateCompilations() = with(Project("new-mpp-associate-compilations", GradleVersionRequired.AtLeast("5.0"))) { - setupWorkingDir() - gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + fun testAssociateCompilations() { + testAssociateCompilationsImpl(false) + } - val tasks = listOf("jvm", "js", nativeHostTargetName).map { ":compileIntegrationTestKotlin${it.capitalize()}" } + @Test + fun testAssociateCompilationsWithJsIr() { + testAssociateCompilationsImpl(true) + } - build(*tasks.toTypedArray()) { - assertSuccessful() - assertTasksExecuted(*tasks.toTypedArray()) + private fun testAssociateCompilationsImpl(jsIr: Boolean) { + with(Project("new-mpp-associate-compilations", GradleVersionRequired.AtLeast("5.0"))) { + setupWorkingDir() + gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + if (!jsIr) { + gradleProperties().appendText(jsMode(JsMode.LEGACY)) + } - // JVM: - checkBytecodeContains( - projectDir.resolve("build/classes/kotlin/jvm/integrationTest/com/example/HelloIntegrationTest.class"), - "Hello.internalFun\$new_mpp_associate_compilations", - "HelloTest.internalTestFun\$new_mpp_associate_compilations" + val tasks = listOf("jvm", "js", nativeHostTargetName).map { ":compileIntegrationTestKotlin${it.capitalize()}" } + + build(*tasks.toTypedArray()) { + assertSuccessful() + assertTasksExecuted(*tasks.toTypedArray()) + + // JVM: + checkBytecodeContains( + projectDir.resolve("build/classes/kotlin/jvm/integrationTest/com/example/HelloIntegrationTest.class"), + "Hello.internalFun\$new_mpp_associate_compilations", + "HelloTest.internalTestFun\$new_mpp_associate_compilations" + ) + assertFileExists("build/classes/kotlin/jvm/integrationTest/META-INF/new-mpp-associate-compilations.kotlin_module") + + // JS: + assertFileExists( + if (jsIr) { + "build/classes/kotlin/js/integrationTest/manifest" + } else { + "build/classes/kotlin/js/integrationTest/new-mpp-associate-compilations_integrationTest.js" + } + ) + + // Native: + assertFileExists("build/classes/kotlin/$nativeHostTargetName/integrationTest/new-mpp-associate-compilations_integrationTest.klib") + } + + gradleBuildScript().appendText( + "\nkotlin.sourceSets { getByName(\"commonTest\").requiresVisibilityOf(getByName(\"commonIntegrationTest\")) }" ) - assertFileExists("build/classes/kotlin/jvm/integrationTest/META-INF/new-mpp-associate-compilations.kotlin_module") - - // JS: - assertFileExists("build/classes/kotlin/js/integrationTest/new-mpp-associate-compilations_integrationTest.js") - - // Native: - assertFileExists("build/classes/kotlin/$nativeHostTargetName/integrationTest/new-mpp-associate-compilations_integrationTest.klib") - } - - gradleBuildScript().appendText( - "\nkotlin.sourceSets { getByName(\"commonTest\").requiresVisibilityOf(getByName(\"commonIntegrationTest\")) }" - ) - build { - assertFailed() - assertContains(UnsatisfiedSourceSetVisibilityException::class.java.simpleName) + build { + assertFailed() + assertContains(UnsatisfiedSourceSetVisibilityException::class.java.simpleName) + } } }