diff --git a/libraries/tools/gradle/android-test-fixes/Readme.md b/libraries/tools/gradle/android-test-fixes/Readme.md new file mode 100644 index 00000000000..917117d7766 --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/Readme.md @@ -0,0 +1,4 @@ +## Description + +Contains a plugin for Gradle integration tests applying different fixes +for test that are using Android Gradle plugin. \ No newline at end of file diff --git a/libraries/tools/gradle/android-test-fixes/build.gradle.kts b/libraries/tools/gradle/android-test-fixes/build.gradle.kts new file mode 100644 index 00000000000..c75a8e2a5ee --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/build.gradle.kts @@ -0,0 +1,56 @@ +import plugins.KotlinBuildPublishingPlugin + +plugins { + id("java-gradle-plugin") + id("gradle-plugin-common-configuration") + id("com.gradle.plugin-publish") +} + +repositories { + google() +} + +dependencies { + compileOnly(gradleKotlinDsl()) + compileOnly("com.android.tools.build:gradle:3.4.0") + compileOnly("com.android.tools.build:gradle-api:3.4.0") + compileOnly("com.android.tools.build:builder:3.4.0") + compileOnly("com.android.tools.build:builder-model:3.4.0") +} + +configure { + isAutomatedPublishing = false +} + +gradlePlugin { + (plugins) { + create("android-test-fixes") { + id = "org.jetbrains.kotlin.test.fixes.android" + implementationClass = "org.jetbrains.kotlin.gradle.test.fixes.android.AndroidTestFixesPlugin" + } + } +} + +pluginBundle { + (plugins) { + named("android-test-fixes") { + id = "org.jetbrains.kotlin.test.fixes.android" + displayName = "AndroidTestFixes" + } + } +} + +publishPluginMarkers() + +// Disable releasing for this plugin +// It is not intended to be released publicly +tasks.withType() + .configureEach { + if (name.endsWith("PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository")) { + enabled = false + } + } + +tasks.named("publishPlugins") { + enabled = false +} \ No newline at end of file diff --git a/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/AndroidTestFixesPlugin.kt b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/AndroidTestFixesPlugin.kt new file mode 100644 index 00000000000..3cb6ca2b1c5 --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/AndroidTestFixesPlugin.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2021 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.test.fixes.android + +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.test.fixes.android.fixes.applyDebugKeystoreFix + +class AndroidTestFixesPlugin : Plugin { + override fun apply(target: Project) { + val testFixesProperties = TestFixesProperties(target) + target.applyDebugKeystoreFix(testFixesProperties) + } +} \ No newline at end of file diff --git a/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/TestFixesProperties.kt b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/TestFixesProperties.kt new file mode 100644 index 00000000000..fdf1f7cfe7a --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/TestFixesProperties.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2010-2021 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.test.fixes.android + +import org.gradle.api.Project + +internal class TestFixesProperties( + private val project: Project +) { + val androidDebugKeystoreLocation: String + get() = project.findProperty(ANDROID_DEBUG_KEYSTORE_LOCATION) as String? ?: throw IllegalArgumentException( + "$ANDROID_DEBUG_KEYSTORE_LOCATION property was not found in 'gradle.properties'." + ) + + companion object { + private const val PROP_PREFIX = "test.fixes." + private const val ANDROID_DEBUG_KEYSTORE_LOCATION = "${PROP_PREFIX}android.debugKeystore" + } +} diff --git a/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/fixes/debugKeystoreFix.kt b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/fixes/debugKeystoreFix.kt new file mode 100644 index 00000000000..7bdf7591b44 --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/fixes/debugKeystoreFix.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2021 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.test.fixes.android.fixes + +import com.android.build.gradle.AppExtension +import com.android.build.gradle.BaseExtension +import com.android.build.gradle.TestExtension +import org.gradle.api.Action +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.test.fixes.android.TestFixesProperties + +/** + * AGP 7+ creates a keystore that is not compatible with lover versions of AGP, + * but could consume keystores created by them. + * + * With this fix 'debug.keystore' could be checked in into the repo and shared + * between test executions. + */ +internal fun Project.applyDebugKeystoreFix( + testFixesProperties: TestFixesProperties +) { + plugins.withId("com.android.application", fix(testFixesProperties)) + plugins.withId("com.android.test", fix(testFixesProperties)) +} + +private inline fun Project.fix( + testFixesProperties: TestFixesProperties +): Action> = Action { + extensions.configure { + logger.info("Reconfiguring Android debug keystore") + buildTypes.named("debug") { + it.signingConfig?.storeFile = file(testFixesProperties.androidDebugKeystoreLocation) + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md b/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md index cc8009f4547..1e400df98ec 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md @@ -103,6 +103,43 @@ fun someTest( } ``` +##### Common test fixes + +Test infrastructure adds following common fixes to all test projects: +- applies 'org.jetbrains.kotlin.test.fixes.android' [plugin](../gradle/android-test-fixes/Readme.md). If you are using custom `settings.gradle` +or `settings.gradle.kts` content in the test project, you need to add this plugin into `pluginManagement`: +
+Kotlin script + +```kotlin +pluginManagement { + repositories { + mavenLocal() + } + + val test_fixes_version: String by settings + plugins { + id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version + } +} +``` +
+
+Groovy + +```groovy +pluginManagement { + repositories { + mavenLocal() + } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version $test_fixes_version + } +} +``` +
+ ##### Deprecated tests setup When you create a new test, figure out which Gradle versions it is supposed to run on. Then, when you instantiate a test project, specify one of: diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index 4307cc7f0af..83fd6768f89 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -288,6 +288,7 @@ tasks.withType { dependsOn(":kotlin-gradle-plugin:validatePlugins") dependsOnKotlinGradlePluginInstall() + dependsOn(":gradle:android-test-fixes:install") dependsOn(":examples:annotation-processor-example:install") systemProperty("kotlinVersion", rootProject.extra["kotlinVersion"] as String) 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 5f0848dd8a0..96bcf49e252 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 @@ -14,6 +14,7 @@ import org.intellij.lang.annotations.Language import org.jetbrains.kotlin.gradle.model.ModelContainer import org.jetbrains.kotlin.gradle.model.ModelFetcherBuildAction import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType +import org.jetbrains.kotlin.gradle.testbase.applyAndroidTestFixes import org.jetbrains.kotlin.gradle.testbase.enableCacheRedirector import org.jetbrains.kotlin.gradle.testbase.extractJavaCompiledSources import org.jetbrains.kotlin.gradle.testbase.extractKotlinCompiledSources @@ -302,6 +303,7 @@ abstract class BaseGradleIT { projectDir.toPath().apply { addPluginManagementToSettings() if (enableCacheRedirector) enableCacheRedirector() + applyAndroidTestFixes() } } } @@ -445,7 +447,7 @@ abstract class BaseGradleIT { } val options = defaultBuildOptions() - val arguments = mutableListOf("-Pkotlin_version=${options.kotlinVersion}") + val arguments = mutableListOf("-Pkotlin_version=${options.kotlinVersion}", "-Ptest_fixes_version=$KOTLIN_VERSION") options.androidGradlePluginVersion?.let { arguments.add("-Pandroid_tools_version=$it") } val env = createEnvironmentVariablesMap(options) val wrapperVersion = chooseWrapperVersionOrFinishTest() @@ -874,6 +876,7 @@ Finished executing task ':$taskName'| } add("-Pkotlin_version=" + options.kotlinVersion) + add("-Ptest_fixes_version=$KOTLIN_VERSION") options.incremental?.let { add("-Pkotlin.incremental=$it") } 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 e9c5b39aba9..02ad354e255 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 @@ -1551,6 +1551,7 @@ class NewMultiplatformIT : BaseGradleIT() { .replace(": ", " = ") .replace("def ", " val ") .replace("new File(cacheRedirectorFile)", "File(cacheRedirectorFile)") + .replace("id \"org.jetbrains.kotlin.test.fixes.android\"", "id(\"org.jetbrains.kotlin.test.fixes.android\")") } renameTo(projectDir.resolve("app/build.gradle.kts")) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt index 8d772c75ecd..a7c3e94183d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt @@ -109,6 +109,7 @@ data class BuildOptions( if (androidVersion != null) { arguments.add("-Pandroid_tools_version=${androidVersion}") } + arguments.add("-Ptest_fixes_version=${TestVersions.Kotlin.CURRENT}") return arguments.toList() } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/androidFixes.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/androidFixes.kt new file mode 100644 index 00000000000..08b42e6760d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/androidFixes.kt @@ -0,0 +1,98 @@ +/* + * Copyright 2010-2021 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.testbase + +import org.jetbrains.kotlin.gradle.util.modify +import java.io.File +import java.nio.file.Path +import java.nio.file.Paths +import kotlin.io.path.exists + +internal fun Path.applyAndroidTestFixes() { + // Path relative to the current gradle module project dir + val keystoreFile = Paths.get("src/test/resources/common/debug.keystore") + assert(keystoreFile.exists()) { + "Common 'debug.keystore' file does not exists in ${keystoreFile.toAbsolutePath()} location!" + } + resolve("gradle.properties").append( + """ + |test.fixes.android.debugKeystore=${keystoreFile.toAbsolutePath().toString().normalizePath()} + | + """.trimMargin() + ) + + val pathFile = toFile() + + pathFile.walkTopDown() + .filter { it.name == "build.gradle" || it.name == "build.gradle.kts" } + .forEach { file -> + when (file.name) { + "build.gradle" -> file.updateBuildGradle() + "build.gradle.kts" -> file.updateBuildGradleKts() + } + } +} + +private fun File.updateBuildGradle() { + modify { + if (it.contains("plugins {")) { + """ + |${it.substringBefore("plugins {")} + |plugins { + | id "org.jetbrains.kotlin.test.fixes.android" + |${it.substringAfter("plugins {")} + """.trimMargin() + } else if (it.contains("apply plugin:")) { + it.modifyBuildScript().run { + """ + |${substringBefore("apply plugin:")} + |apply plugin: 'org.jetbrains.kotlin.test.fixes.android' + |apply plugin:${substringAfter("apply plugin:")} + """.trimMargin() + } + } else { + it.modifyBuildScript() + } + } +} + +private fun String.modifyBuildScript(isKts: Boolean = false): String = + if (contains("buildscript {") && + contains("classpath") + ) { + val kotlinVersionStr = if (isKts) "${'$'}{property(\"test_fixes_version\")}" else "${'$'}test_fixes_version" + """ + |${substringBefore("classpath")} + |classpath("org.jetbrains.kotlin:android-test-fixes:$kotlinVersionStr") + |classpath${substringAfter("classpath")} + """.trimMargin() + } else { + this + } + + +private fun File.updateBuildGradleKts() { + modify { + if (it.contains("plugins {")) { + """ + |${it.substringBefore("plugins {")} + |plugins { + | id("org.jetbrains.kotlin.test.fixes.android") + |${it.substringAfter("plugins {")} + """.trimMargin() + } else if (it.contains("apply(plugin")) { + it.modifyBuildScript(true).run { + """ + |${substringBefore("apply(plugin")} + |apply(plugin = "org.jetbrains.kotlin.test.fixes.android") + |apply(plugin${substringAfter("apply(plugin")} + """.trimMargin() + } + } else { + it.modifyBuildScript(true) + } + } +} \ No newline at end of file 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 98e17756862..549961850ce 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 @@ -26,7 +26,7 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE = id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.multiplatform.pm20" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.plugin.allopen" version "${'$'}kotlin_version" - id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}kotlin_version" + id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}test_fixes_version" } resolutionStrategy { @@ -67,6 +67,7 @@ internal val DEFAULT_KOTLIN_SETTINGS_FILE = val kotlin_version: String by settings val android_tools_version: String by settings + val test_fixes_version: String by settings plugins { id("org.jetbrains.kotlin.jvm") version kotlin_version id("org.jetbrains.kotlin.kapt") version kotlin_version @@ -75,7 +76,7 @@ internal val DEFAULT_KOTLIN_SETTINGS_FILE = id("org.jetbrains.kotlin.multiplatform") version kotlin_version id("org.jetbrains.kotlin.multiplatform.pm20") version kotlin_version id("org.jetbrains.kotlin.plugin.allopen") version kotlin_version - id("org.jetbrains.kotlin.test.fixes.android") version kotlin_version + id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version } resolutionStrategy { 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 d33db784b97..d97fdeb86e2 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 @@ -318,6 +318,10 @@ internal fun Path.addPluginManagementToSettings() { } else -> settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE) } + + if (Files.exists(resolve("buildSrc"))) { + resolve("buildSrc").addPluginManagementToSettings() + } } private fun TestProject.agreeToBuildScanService() { @@ -365,6 +369,7 @@ internal fun Path.enableAndroidSdk() { """.trimIndent() ) acceptAndroidSdkLicenses(androidSdk) + applyAndroidTestFixes() } @OptIn(ExperimentalPathApi::class) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/common/debug.keystore b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/common/debug.keystore new file mode 100644 index 00000000000..20dce9e4e13 Binary files /dev/null and b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/common/debug.keystore differ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/instantExecutionWithIncludedBuildPlugin/includedBuild/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/instantExecutionWithIncludedBuildPlugin/includedBuild/settings.gradle index 22a71aaa3ef..3dc6891e601 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/instantExecutionWithIncludedBuildPlugin/includedBuild/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/instantExecutionWithIncludedBuildPlugin/includedBuild/settings.gradle @@ -7,5 +7,6 @@ pluginManagement { plugins { id "org.jetbrains.kotlin.jvm" version "$kotlin_version" + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle index 431ec5d5051..5f148e39ed9 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle @@ -1,10 +1,14 @@ pluginManagement { repositories { - gradlePluginPortal() - mavenLocal() - mavenCentral() + google() + gradlePluginPortal() + } + + plugins { + id "org.jetbrains.kotlin.js" version "$kotlin_version" + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinPluginDepsInBuildSrc/buildSrc/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinPluginDepsInBuildSrc/buildSrc/settings.gradle.kts index 926d2543010..0415904e20c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinPluginDepsInBuildSrc/buildSrc/settings.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinPluginDepsInBuildSrc/buildSrc/settings.gradle.kts @@ -1,6 +1,11 @@ pluginManagement { repositories { - mavenCentral() mavenLocal() + mavenCentral() + } + + val test_fixes_version: String by settings + plugins { + id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/build.gradle index 1d83b293943..849251b3539 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/build.gradle @@ -1,4 +1,6 @@ -apply plugin: 'kotlin' +plugins { + id "org.jetbrains.kotlin.jvm" +} repositories { mavenLocal() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/build.gradle index 79f4cc42dc0..9938fe08943 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/build.gradle @@ -1,10 +1,12 @@ +plugins { + id 'java' +} + repositories { mavenLocal() mavenCentral() } -apply plugin: 'java' - dependencies { runtimeOnly "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/settings.gradle new file mode 100644 index 00000000000..19e65e61b2b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-source-set-hierarchy-analysis/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-source-set-hierarchy-analysis/settings.gradle.kts index 9f8504a8a75..0f0194bd711 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-source-set-hierarchy-analysis/settings.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-source-set-hierarchy-analysis/settings.gradle.kts @@ -5,6 +5,8 @@ pluginManagement { } plugins { val kotlin_version: String by settings + val test_fixes_version: String by settings kotlin("multiplatform").version(kotlin_version) + id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiprojectWithDependency/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiprojectWithDependency/settings.gradle index e0685135bd5..f689a98b67c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiprojectWithDependency/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiprojectWithDependency/settings.gradle @@ -1 +1,14 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + google() + gradlePluginPortal() + } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" + } +} + include 'projA', 'projB' diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/allopenPluginsDsl/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/allopenPluginsDsl/settings.gradle index bcbc4d55acf..8e8c9dca8af 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/allopenPluginsDsl/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/allopenPluginsDsl/settings.gradle @@ -3,4 +3,8 @@ pluginManagement { maven { url '' } gradlePluginPortal() } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyAllPlugins/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyAllPlugins/settings.gradle index bcbc4d55acf..8e8c9dca8af 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyAllPlugins/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyAllPlugins/settings.gradle @@ -3,4 +3,8 @@ pluginManagement { maven { url '' } gradlePluginPortal() } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyToSubprojects/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyToSubprojects/settings.gradle index 9f109b9a3cd..b3197b09d3d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyToSubprojects/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/pluginsDsl/applyToSubprojects/settings.gradle @@ -3,6 +3,10 @@ pluginManagement { maven { url '' } gradlePluginPortal() } + + plugins { + id "org.jetbrains.kotlin.test.fixes.android" version "$test_fixes_version" + } } include 'subproject' \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index bf6dfd0a97e..25b3636441e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -234,6 +234,7 @@ include ":benchmarks", ":kotlin-gradle-plugin-model", ":kotlin-gradle-plugin-test-utils-embeddable", ":kotlin-gradle-plugin-integration-tests", + ":gradle:android-test-fixes", ":kotlin-tooling-metadata", ":kotlin-allopen", ":kotlin-noarg", @@ -616,6 +617,7 @@ project(':kotlin-gradle-plugin').projectDir = "$rootDir/libraries/tools/kotlin-g project(':kotlin-gradle-plugin-model').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-model" as File project(':kotlin-gradle-plugin-test-utils-embeddable').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-test-utils-embeddable" as File project(':kotlin-gradle-plugin-integration-tests').projectDir = "$rootDir/libraries/tools/kotlin-gradle-plugin-integration-tests" as File +project(':gradle:android-test-fixes').projectDir = "$rootDir/libraries/tools/gradle/android-test-fixes" as File project(':kotlin-tooling-metadata').projectDir = "$rootDir/libraries/tools/kotlin-tooling-metadata" as File project(':kotlin-allopen').projectDir = "$rootDir/libraries/tools/kotlin-allopen" as File project(':kotlin-noarg').projectDir = "$rootDir/libraries/tools/kotlin-noarg" as File