From e7b981c467eaccf705471b834527ceaefb45e2b5 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 30 Jan 2020 12:52:32 +0300 Subject: [PATCH] [Gradle, JS] Fix testBrowserDistribution --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 8 +++-- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 31 ++++++++++++------- .../jetbrains/kotlin/gradle/util/jsMode.kt | 11 +++++++ .../app/build.gradle.kts | 1 + .../base/build.gradle.kts | 3 +- .../lib/build.gradle.kts | 3 +- .../kotlin/gradle/plugin/KotlinProperties.kt | 7 +++-- 7 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/jsMode.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index af92a2ff198..6ef1ecca419 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -628,8 +628,12 @@ Finished executing task ':$taskName'| } fun Project.gradleProperties(): File = - listOf("gradle.properties").mapNotNull { - File(projectDir, it).takeIf(File::exists) + listOf("gradle.properties").map { + File(projectDir, it).also { file -> + if (!file.exists()) { + file.createNewFile() + } + } }.single() /** diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index b10bfb7b892..191ec6447c2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -1,10 +1,12 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel +import org.jetbrains.kotlin.gradle.plugin.JsMode import org.jetbrains.kotlin.gradle.tasks.USING_JS_INCREMENTAL_COMPILATION_MESSAGE import org.jetbrains.kotlin.gradle.tasks.USING_JS_IR_BACKEND_MESSAGE import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.getFilesByNames +import org.jetbrains.kotlin.gradle.util.jsMode import org.jetbrains.kotlin.gradle.util.modify import org.junit.Assume.assumeFalse import org.junit.Test @@ -507,26 +509,33 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) : gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) gradleSettingsScript().modify(::transformBuildScriptWithPluginsDsl) + if (!irBackend) { + gradleProperties().appendText(jsMode(JsMode.LEGACY)) + } + build("build") { assertSuccessful() - assertTasksExecuted( - ":app:processDceKotlinJs", - ":app:browserProductionWebpack" - ) + assertTasksExecuted(":app:browserProductionWebpack") assertFileExists("build/js/packages/kotlin-js-browser-base") assertFileExists("build/js/packages/kotlin-js-browser-lib") assertFileExists("build/js/packages/kotlin-js-browser-app") - assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce") - - assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin.js") - assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-app.js") - assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-lib.js") - assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-base.js") assertFileExists("app/build/distributions/app.js") - assertFileExists("app/build/distributions/app.js.map") + + if (!irBackend) { + assertTasksExecuted(":app:processDceKotlinJs") + + assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce") + + assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin.js") + assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-app.js") + assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-lib.js") + assertFileExists("build/js/packages/kotlin-js-browser-app/kotlin-dce/kotlin-js-browser-base.js") + + assertFileExists("app/build/distributions/app.js.map") + } } build("clean", "browserDistribution") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/jsMode.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/jsMode.kt new file mode 100644 index 00000000000..3b8441ed41a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/jsMode.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.util + +import org.jetbrains.kotlin.gradle.plugin.JsMode + +fun jsMode(mode: JsMode) = + "\n${JsMode.jsModeProp}=$mode" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/app/build.gradle.kts index 726c96b48da..65e3ba983e6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/app/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/app/build.gradle.kts @@ -11,5 +11,6 @@ kotlin { target { browser { } + produceExecutable() } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/base/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/base/build.gradle.kts index 5cdc11d5829..f40472b38b9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/base/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/base/build.gradle.kts @@ -8,8 +8,9 @@ dependencies { kotlin { target { + useCommonJs() + produceKotlinLibrary() browser { - useCommonJs() } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/lib/build.gradle.kts index bc2e96ae6a7..56f282aef24 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/lib/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-browser-project/lib/build.gradle.kts @@ -9,8 +9,9 @@ dependencies { kotlin { target { + useCommonJs() browser { - useCommonJs() } + produceKotlinLibrary() } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index 901224edaca..c596d131ba4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Project import org.jetbrains.kotlin.gradle.dsl.Coroutines import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind +import org.jetbrains.kotlin.gradle.plugin.JsMode.Companion.jsModeProp import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile @@ -172,7 +173,7 @@ internal class PropertiesProvider private constructor(private val project: Proje * Use Kotlin/JS backend mode */ val jsMode: JsMode - get() = property("kotlin.js.mode")?.let { JsMode.byCompilerArgument(it) } ?: JsMode.IR + get() = property(jsModeProp)?.let { JsMode.byCompilerArgument(it) } ?: JsMode.IR private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? { val deprecatedProperty = property(deprecatedPropName) @@ -208,12 +209,14 @@ internal class PropertiesProvider private constructor(private val project: Proje } } -internal enum class JsMode { +enum class JsMode { LEGACY, IR, MIXED; companion object { + const val jsModeProp = "kotlin.js.mode" + fun byCompilerArgument(argument: String): JsMode? = JsMode.values().firstOrNull { it.name.equals(argument, ignoreCase = true) } }