diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/projectSetupDefaults.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/projectSetupDefaults.kt index 45b7473c76b..6d498b19367 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/projectSetupDefaults.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/projectSetupDefaults.kt @@ -24,6 +24,7 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE = id "org.jetbrains.kotlin.android" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.js" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version" + id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}kotlin_version" } resolutionStrategy { @@ -48,3 +49,44 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE = } } """.trimIndent() + +@Language("kts") +internal val DEFAULT_KOTLIN_SETTINGS_FILE = + """ + pluginManagement { + repositories { + mavenLocal() + mavenCentral() + google() + gradlePluginPortal() + } + + val kotlin_version: String by settings + val android_tools_version: String by settings + plugins { + id("org.jetbrains.kotlin.jvm") version kotlin_version + id("org.jetbrains.kotlin.kapt") version kotlin_version + id("org.jetbrains.kotlin.android") version kotlin_version + id("org.jetbrains.kotlin.js") version kotlin_version + id("org.jetbrains.kotlin.multiplatform") version kotlin_version + id("org.jetbrains.kotlin.test.fixes.android") version kotlin_version + } + + resolutionStrategy { + eachPlugin { + when (requested.id.id) { + "com.android.application", + "com.android.library", + "com.android.test", + "com.android.dynamic-feature", + "com.android.asset-pack", + "com.android.asset-pack-bundle", + "com.android.lint", + "com.android.instantapp", + "com.android.feature" -> useModule("com.android.tools.build:gradle:${'$'}android_tools_version") + "kotlin-dce-js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version") + } + } + } + } + """.trimIndent() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt index 2bc321ce75f..d33db784b97 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt @@ -290,32 +290,33 @@ private fun Path.addDefaultBuildFiles() { } } -private fun Path.addPluginManagementToSettings() { +internal fun Path.addPluginManagementToSettings() { val settingsGradle = resolve("settings.gradle") val settingsGradleKts = resolve("settings.gradle.kts") - val fileToUpdate = when { - Files.exists(settingsGradle) -> settingsGradle - Files.exists(settingsGradleKts) -> settingsGradleKts - else -> null - } - - if (fileToUpdate == null) { - settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE) - } else { - val settingsContent = fileToUpdate.toFile().readText() - if (!settingsContent - .lines() - .first { !it.startsWith("//") } - .startsWith("pluginManagement {") - ) { - fileToUpdate.toFile().writeText( + when { + Files.exists(settingsGradle) -> settingsGradle.modify { + if (!it.contains("pluginManagement {")) { """ - $DEFAULT_GROOVY_SETTINGS_FILE - - $settingsContent - """.trimIndent() - ) + |$DEFAULT_GROOVY_SETTINGS_FILE + | + |$it + |""".trimMargin() + } else { + it + } } + Files.exists(settingsGradleKts) -> settingsGradleKts.modify { + if (!it.contains("pluginManagement {")) { + """ + |$DEFAULT_KOTLIN_SETTINGS_FILE + | + |$it + """.trimMargin() + } else { + it + } + } + else -> settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE) } }