[Gradle, JS] Fix testBrowserDistribution

This commit is contained in:
Ilya Goncharov
2020-01-30 12:52:32 +03:00
parent 99d0fa0d29
commit e7b981c467
7 changed files with 47 additions and 17 deletions
@@ -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()
/**
@@ -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") {
@@ -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"
@@ -11,5 +11,6 @@ kotlin {
target {
browser {
}
produceExecutable()
}
}
@@ -8,8 +8,9 @@ dependencies {
kotlin {
target {
useCommonJs()
produceKotlinLibrary()
browser {
useCommonJs()
}
}
}
@@ -9,8 +9,9 @@ dependencies {
kotlin {
target {
useCommonJs()
browser {
useCommonJs()
}
produceKotlinLibrary()
}
}
@@ -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) }
}