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 d5531f0f14b..ad7dff21cdc 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 @@ -341,6 +341,7 @@ open class NewMultiplatformIT : BaseGradleIT() { assertTasksExecuted(*compileTasksNames.toTypedArray(), ":allMetadataJar") val groupDir = projectDir.resolve("repo/com/example") + @Suppress("DEPRECATION") val jsExtension = if (jsCompilerType == KotlinJsCompilerType.LEGACY) "jar" else "klib" val jsJarName = "sample-lib-nodejs/1.0/sample-lib-nodejs-1.0.$jsExtension" @@ -830,10 +831,16 @@ open class NewMultiplatformIT : BaseGradleIT() { build(task) { assertSuccessful() assertTasksExecuted(":$task") + val arguments = parseCompilerArguments() + assertTrue(arguments.progressiveMode, "Expected progressiveMode") + assertTrue(arguments.noInline, "Expected no-inline") + assertEquals( + setOf("kotlin.ExperimentalUnsignedTypes", "kotlin.contracts.ExperimentalContracts"), + arguments.optIn?.toSet() + ) assertContains( "-XXLanguage:+InlineClasses", - "-progressive", "-opt-in=kotlin.ExperimentalUnsignedTypes", - "-opt-in=kotlin.contracts.ExperimentalContracts", + "-progressive", "-Xno-inline" ) } @@ -1561,8 +1568,9 @@ open class NewMultiplatformIT : BaseGradleIT() { "jvm6", "nodeJs", "mingw64", "mingw86", "linux64", "macos64", "linuxMipsel32", "wasm" ).flatMapTo(mutableSetOf()) { target -> listOf("main", "test").map { compilation -> - Triple(target, compilation, - "$target${compilation.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }}" + Triple( + target, compilation, + "$target${compilation.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }}" ) } } + Triple("metadata", "main", "commonMain") @@ -1771,7 +1779,8 @@ open class NewMultiplatformIT : BaseGradleIT() { Locale.getDefault() ) else it.toString() } - }" } + }" + } build( *tasks.toTypedArray() @@ -1956,12 +1965,14 @@ open class NewMultiplatformIT : BaseGradleIT() { } @Test - fun testWasmJs() = with(Project( - "new-mpp-wasm-js", - // TODO: this test fails with deprecation error on Gradle <7.0 - // Should be fixed via planned fixes in Kotlin/JS plugin: https://youtrack.jetbrains.com/issue/KFC-252 - gradleVersionRequirement = GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_0) - )) { + fun testWasmJs() = with( + Project( + "new-mpp-wasm-js", + // TODO: this test fails with deprecation error on Gradle <7.0 + // Should be fixed via planned fixes in Kotlin/JS plugin: https://youtrack.jetbrains.com/issue/KFC-252 + gradleVersionRequirement = GradleVersionRequired.AtLeast(TestVersions.Gradle.G_7_0) + ) + ) { setupWorkingDir() gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) build("build") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/compilerArgumentUtils.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/compilerArgumentUtils.kt index 6f61c251afa..e23f1ad0772 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/compilerArgumentUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/compilerArgumentUtils.kt @@ -8,14 +8,27 @@ package org.jetbrains.kotlin.gradle.util import org.gradle.testkit.runner.BuildResult import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments +import org.jetbrains.kotlin.gradle.BaseGradleIT import kotlin.reflect.KClass inline fun BuildResult.parseCompilerArguments(): T { return parseCompilerArguments(T::class) } +inline fun BaseGradleIT.CompiledProject.parseCompilerArguments(): T { + return parseCompilerArguments(T::class) +} + fun BuildResult.parseCompilerArguments(type: KClass): T { - val arguments = findCommandLineArguments(output).lines().map { it.trim() } + return parseCompilerArgumentsFromBuildOutput(type, output) +} + +fun BaseGradleIT.CompiledProject.parseCompilerArguments(type: KClass): T { + return parseCompilerArgumentsFromBuildOutput(type, output) +} + +fun parseCompilerArgumentsFromBuildOutput(type: KClass, buildOutput: String): T { + val arguments = findCommandLineArguments(buildOutput).lines().map { it.trim() } return parseCommandLineArguments(type, arguments) }