[Gradle] Add test checking '.attribute(key, attr)' method is not used

We want to prevent usages of 'AttributeContainer.attribute(key, attr)'
method in our codebase.

^KT-60664 Verification Pending
This commit is contained in:
Yahor Berdnikau
2024-01-08 10:38:21 +01:00
committed by Space Team
parent dbd77fc785
commit 0e98eb5bb4
@@ -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)
}
)