From 43df58aaa6cc1a2a949fc9e9177458f200dee1de Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 1 Dec 2021 22:28:04 +0100 Subject: [PATCH] Pin AGP 'debug.keystore' in the repo. This change adds shared 'debug.keystore' into the repository and sets all the tests to use it. Fixes issue when keystore was created by AGP 7+, but then consumed in the test using lower versions of AGP. ^KT-45745 In Progress --- .../tools/gradle/android-test-fixes/Readme.md | 4 + .../android-test-fixes/build.gradle.kts | 52 +++++++++ .../fixes/android/AndroidTestFixesPlugin.kt | 17 +++ .../test/fixes/android/TestFixesProperties.kt | 22 ++++ .../fixes/android/fixes/debugKeystoreFix.kt | 31 ++++++ .../build.gradle.kts | 1 + .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 5 +- .../kotlin/gradle/KotlinJavaToolchainTest.kt | 2 +- .../kotlin/gradle/NewMultiplatformIT.kt | 1 + .../kotlin/gradle/testbase/KGPBaseTest.kt | 2 + .../kotlin/gradle/testbase/androidFixes.kt | 101 ++++++++++++++++++ .../gradle/testbase/projectSetupDefaults.kt | 5 +- .../kotlin/gradle/testbase/testDsl.kt | 5 + .../src/test/resources/common/debug.keystore | Bin 0 -> 2107 bytes .../includedBuild/settings.gradle | 12 +++ .../js-composite-build/lib/settings.gradle | 15 +++ .../buildSrc/settings.gradle.kts | 7 +- .../kotlinProjectWithBuildSrc/build.gradle | 4 +- .../buildSrc/build.gradle | 6 +- .../buildSrc/settings.gradle | 10 ++ .../settings.gradle.kts | 2 + .../settings.gradle | 13 +++ .../allopenPluginsDsl/settings.gradle | 4 + .../applyAllPlugins/settings.gradle | 4 + .../applyToSubprojects/settings.gradle | 4 + settings.gradle | 2 + 26 files changed, 323 insertions(+), 8 deletions(-) create mode 100644 libraries/tools/gradle/android-test-fixes/Readme.md create mode 100644 libraries/tools/gradle/android-test-fixes/build.gradle.kts create mode 100644 libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/AndroidTestFixesPlugin.kt create mode 100644 libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/TestFixesProperties.kt create mode 100644 libraries/tools/gradle/android-test-fixes/src/main/kotlin/org/jetbrains/kotlin/gradle/test/fixes/android/fixes/debugKeystoreFix.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/androidFixes.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/common/debug.keystore create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/instantExecutionWithIncludedBuildPlugin/includedBuild/settings.gradle create mode 100755 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/settings.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinProjectWithBuildSrc/buildSrc/settings.gradle 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 0000000000000..917117d776692 --- /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 0000000000000..f41cbe7281a29 --- /dev/null +++ b/libraries/tools/gradle/android-test-fixes/build.gradle.kts @@ -0,0 +1,52 @@ +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 + } + } \ 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 0000000000000..3cb6ca2b1c5d6 --- /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 0000000000000..fdf1f7cfe7a49 --- /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 0000000000000..01fca974d216c --- /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,31 @@ +/* + * 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 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") { + 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/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index c432a9fbec876..546274b245f2d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -204,6 +204,7 @@ tasks.withType { dependsOn(":kotlin-gradle-plugin:validatePlugins") dependsOnKotlinGradlePluginInstall() + dependsOn(":gradle:android-test-fixes:install") systemProperty("kotlinVersion", rootProject.extra["kotlinVersion"] as String) systemProperty("runnerGradleVersion", gradle.gradleVersion) 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 285912ee9ae9d..770507274d317 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 @@ -18,6 +18,7 @@ import org.jdom.output.XMLOutputter 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.addPluginManagementToSettings import org.jetbrains.kotlin.gradle.util.* @@ -296,6 +297,7 @@ abstract class BaseGradleIT { projectDir.toPath().apply { addPluginManagementToSettings() if (enableCacheRedirector) enableCacheRedirector() + applyAndroidTestFixes() } } } @@ -452,7 +454,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() @@ -929,6 +931,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/KotlinJavaToolchainTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt index 870182f002ab9..79a363ec8a75d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt @@ -776,7 +776,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { """.trimIndent() ) - build("assembleDebug", "-Pagp_version=${TestVersions.AGP.AGP_42}") + build("assembleDebug", "-Pandroid_tools_version=${TestVersions.AGP.AGP_42}") } } 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 e60e5c91c3744..950c852ffd01b 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 @@ -1518,6 +1518,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/KGPBaseTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/KGPBaseTest.kt index bf3db8a0f0057..f490aa2499c3c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/KGPBaseTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/KGPBaseTest.kt @@ -107,6 +107,8 @@ abstract class KGPBaseTest { } } + 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 0000000000000..64dbe36d5458a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/androidFixes.kt @@ -0,0 +1,101 @@ +@file:OptIn(kotlin.io.path.ExperimentalPathApi::class) +/* + * 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) + } + } +} + +private fun String.normalizePath() = replace("\\", "/") 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 98e17756862d0..549961850ce84 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 4cc8b6c436426..fbbecc8c4bcb1 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 @@ -267,6 +267,10 @@ internal fun Path.addPluginManagementToSettings() { } else -> settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE) } + + if (Files.exists(resolve("buildSrc"))) { + resolve("buildSrc").addPluginManagementToSettings() + } } private fun TestProject.setupNonDefaultJdk(pathToJdk: File) { @@ -290,6 +294,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 0000000000000000000000000000000000000000..20dce9e4e13d1d1f567007c19b75648830b6f172 GIT binary patch literal 2107 zcmbW1c{~%0AICRi*s$bkLk-P2Yr`DnNO;JZS-B&r5xH_ixh5inTouyTB*(}RC07w9 zk#kn*aVK&;BpQ1>#~;t@_vi1A&-ah_AK%yac)i|x-}k-)006H20RIl`f}dxQzqhC7 zC65r2&!zBv9_D3|<_!SwfUsn44ps;ZQ2_(Ffy!LMKp+o*o6NoFdp-<44P)d!vAQ~U z>&P&bJ2>4J?M6r7Zx#fb?@Fex+<3PvH})(ChT7A=2c3}4dLgGT+|LM1UM2~3KA)5l4hT{Y8t<#(qbt2RDvV>}o#xsm`mQ%XlB zm83j9S-WGS`%;m%<%1dIF4s8iYteJw)G$swIRX>u5=dQ)QZA*^I!a4yrmUPeZ)i5^ zu-WNm+Eel7>vNmPku>&n?s2c@q2e=tqxG$Kp~0)J77=Q*#!v9m^{1xvKG2 zFLL#Y%Tn(u;E<<&gGg&@X}X*gAKh@-73Tiu68F45-prTvlv-bSO&t=z!;Bo7%>Y_w>Xs zoUl7HBbNsrG*xSC<4&_{Mqf@J&5(QqI?TiQMs6BU`eFf*39Sd$pOJ6c3%|R`hmbQZ z89dHTL}AR+bQ%&{#4fma%WBLNoBf(Vahf~17tZH?oRzFOryWxT*Lr^c!yMxB(G=lj zl_jP%7f;h0fh(? z-D0Rb#LHq|uZ0;7d1c4esb4 zTVSq5ZSrmzkvb$|UV+5F`-J!YMBB2{(LQBW6|GJ(XcfM&j`S04eNBbz9pT!p>!OFc zYv$WUW31w6X|a0{U)1CIUH|X|h;#Bcs#KR*hG9!ELi71JRgBEv?NrxiX_-Gh#0oWg zoXuY}ps1}Nf>Uf{YzH5^WH0Hlex}+Ur^Q|t+PLA|?4rwCB#&>(AC~r_xOzqtS7Zsr zngxg1zUUhI-j;K2PbJlIhg!nYS35^NN9B0WL;j+YC!j--i%r6=p+))N z9ExSP^(0&NMDVSpDPEb>T*qyf5)-AxAEELx1sfYcZxOr5Wco&|P~S?w>$|@l$>V^* zV|Dhe`4vm%n!%ER@3??KtRR?QIl(MpOK@L{JOHc~P8=%=2A$;w2?!eg<5Z;aUsA;# z*mvkYhY0Zg%W+UF|6c?w!gbaTiNpKGH7wrg5NyBVusAiXf5HFXnhccv z@0k1g29bdCKm1NBWYs^QPfg>U9e#RlI>MUoJ#J>|iT zf>9_Pb6p|8BIHE6lm$L@@^?JHu-KftRO#(+4*CzsO4af3R)5`cG{t5-?g4#*f`ohB z%fgQz?Ci20bFLUgeMX&@P>5-E@pnBwngA_+^#FmE{IJHOSVMi@8fG=3;8{ebNj_z| zLn5cY7H8AW1KTWzCKGY>-mja>BUg8(yfk3`EmB94IFn)APUz$~E;vbd_@-JPvI2fp{Zvgu;1XL7M%C3lsb6AO0(q-#?q_uyV@5u!5< zJw~me7_=cHC+-&)2nhJ!NA6z;2#B#4U@=yhi1kZ>Jwnndb3qjcEtai19p=X>4bCY+ zLGPCM-SQ~?nPB&?)5Pug#Yi`e3-Msf_>}UBiE-QO&laYY)(ZI3^TuAClG;N#D2_Y| zJ>|hH4R*eM5nAPVwCM@i50gg}+h~D6NOuM(D#*`_zFmPP*p08mmTh!@NS&fU4>2Y~ zxH7&KV58;E;Jj2*zPDvGU>' } 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 bcbc4d55acf30..8e8c9dca8af61 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 9f109b9a3cdc7..b3197b09d3d6c 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 3fcee642245f8..79a7fe0830d95 100644 --- a/settings.gradle +++ b/settings.gradle @@ -209,6 +209,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", @@ -567,6 +568,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