[Gradle, JS] Fix associated compilations test and adopt to js ir

This commit is contained in:
Ilya Goncharov
2020-01-30 15:39:13 +03:00
parent 6698dc7597
commit 40f5663a57
@@ -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)
}
}
}