diff --git a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index 68f3665c1d6..8646c072e6f 100644 --- a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -167,6 +167,7 @@ class CodeConformanceTest : TestCase() { } val atAuthorPattern = Pattern.compile("/\\*.+@author.+\\*/", Pattern.DOTALL) + val gradleEagerAttributeMethodRegex = "\\.attribute\\(.+,.+\\)".toRegex() @Suppress("SpellCheckingInspection") val tests = listOf( FileTestCase( @@ -218,6 +219,29 @@ class CodeConformanceTest : TestCase() { "These files are affected:\n%s", ) { _, source -> "gnu.trove" in source + }, + FileTestCase( + message = """ + |KT-60644: Using Gradle 'AttributeContainer.attribute(key, value)' method leads to eager tasks creation in Kotlin + |Gradle plugin. Please use instead for KGP code 'HasAttributes.setAttributeProvider' or 'HasAttributes.setAttribute' + |(for simple values) extension methods and for other code 'AttributeContainer.attributeProvider(key, provider { value })'. + | + |%d files are affected. Please update these files or exclude them in this test: + |%s + """.trimMargin(), + allowedFiles = listOf( + "libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/gradleAttributesContainerUtils.kt", + "libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/AttributesConfigurationHelperG6.kt", + "libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/AttributesConfigurationHelperG71.kt", + "libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/AttributesConfigurationHelperG70.kt", + "libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/AttributesConfigurationHelperG74.kt", + "libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt", + "libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt", + "libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt", + "repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/plugins/CustomVariantPublishingDsl.kt", + ) + ) { _, source -> + gradleEagerAttributeMethodRegex.containsMatchIn(source) } )