From 6a901c79a592e4dfff606d17ee820610b64758b7 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 9 May 2022 11:42:21 +0200 Subject: [PATCH] Add Gradle test for KT-51913 --- .../kotlin/gradle/KotlinGradlePluginIT.kt | 11 ++++++ .../build.gradle.kts | 6 ++++ .../consumer/build.gradle.kts | 36 +++++++++++++++++++ .../kotlin-module/build.gradle.kts | 4 +++ .../com/example/utilities/StringUtils.java | 5 +++ .../producer/build.gradle.kts | 25 +++++++++++++ .../settings.gradle.kts | 5 +++ 7 files changed, 92 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/consumer/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/src/main/java/com/example/utilities/StringUtils.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/producer/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/settings.gradle.kts diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 16de4277a40..9df6c9cb55f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -785,4 +785,15 @@ class KotlinGradleIT : KGPBaseTest() { build("tasks") } } + + @DisplayName("KT-51913: KGP should not add attributes to 'legacy' configurations") + @GradleTest + fun noAttributesLegacyConfigurations(gradleVersion: GradleVersion) { + project( + "legacyConfigurationConsumer", + gradleVersion + ) { + build(":consumer:aggregate") + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/build.gradle.kts new file mode 100644 index 00000000000..8bd0d74957b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/build.gradle.kts @@ -0,0 +1,6 @@ +subprojects { + repositories { + mavenLocal() + mavenCentral() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/consumer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/consumer/build.gradle.kts new file mode 100644 index 00000000000..9e690dee4f9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/consumer/build.gradle.kts @@ -0,0 +1,36 @@ +plugins { + id("base") +} + +val aggregation by configurations.creating { + isCanBeConsumed = false + isCanBeResolved = true + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) + attribute(Usage.USAGE_ATTRIBUTE, objects.named("custom-aggregation-for-reporting")) + attribute(Attribute.of("custom-attribute-type", String::class.java), "custom-attribute-value") + } +} + +dependencies { + val projectPath = path + rootProject.subprojects { + if (path != projectPath) { + aggregation(project) + } + } +} + +val matches = aggregation.incoming.artifactView { lenient(true) } + +tasks.register("aggregate") { + inputs.files(matches.files).withPropertyName("matches") + doFirst { + matches.files.forEach { + if (it.extension != "txt") { + throw GradleException("Not a text file: $it") + } + println("$it: ${it.readText()}") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/build.gradle.kts new file mode 100644 index 00000000000..37326981832 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + kotlin("jvm") + id("java-library") +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/src/main/java/com/example/utilities/StringUtils.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/src/main/java/com/example/utilities/StringUtils.java new file mode 100644 index 00000000000..a87ef7d6007 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/kotlin-module/src/main/java/com/example/utilities/StringUtils.java @@ -0,0 +1,5 @@ +package com.example.utilities; + +public class StringUtils { + +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/producer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/producer/build.gradle.kts new file mode 100644 index 00000000000..53b7125b559 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/producer/build.gradle.kts @@ -0,0 +1,25 @@ +plugins { + id("base") +} + +val publishedFile = layout.buildDirectory.file("publication/output.txt") + +val producerTask by tasks.registering { + outputs.file(publishedFile) + doLast { + publishedFile.get().asFile.writeText("Hello World from ${project.name}") + } +} + +configurations.create("publication") { + isCanBeConsumed = true + isCanBeResolved = false + outgoing.artifact(producerTask) { + builtBy(producerTask) + } + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) + attribute(Usage.USAGE_ATTRIBUTE, objects.named("custom-aggregation-for-reporting")) + attribute(Attribute.of("custom-attribute-type", String::class.java), "custom-attribute-value") + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/settings.gradle.kts new file mode 100644 index 00000000000..2ef99fa5d59 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/legacyConfigurationConsumer/settings.gradle.kts @@ -0,0 +1,5 @@ +rootProject.name = "kotlin-plugin-attributes" + +include("producer") +include("consumer") +include("kotlin-module")