From 118c62cfbbf3396f91c1ed31d24d19fdd8d781ba Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Wed, 29 Mar 2023 16:18:56 +0200 Subject: [PATCH] [Gradle] Mark sourcesElements configurations as non-consumable In case if `isSourcesPublishable` set to false. ^KT-57652 Verification Pending --- .../gradle/plugin/KotlinTargetConfigurator.kt | 17 +++++++---------- .../gradle/unitTests/MppPublicationTest.kt | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 8ed8a4f4e28..d9876bd8b6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -201,16 +201,13 @@ abstract class AbstractKotlinTargetConfigurator } } - project.whenEvaluated { - if (target.internal.isSourcesPublishable) { - configurations.maybeCreate(target.sourcesElementsConfigurationName).apply { - description = "Source files of main compilation of ${target.name}." - isVisible = false - isCanBeResolved = false - isCanBeConsumed = true - configureSourcesPublicationAttributes(target) - } - } + configurations.maybeCreate(target.sourcesElementsConfigurationName).apply { + description = "Source files of main compilation of ${target.name}." + isVisible = false + isCanBeResolved = false + isCanBeConsumed = true + configureSourcesPublicationAttributes(target) + project.whenEvaluated { isCanBeConsumed = target.internal.isSourcesPublishable } } if (createTestCompilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt index 6da8daee9b0..1e1ffb09922 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt @@ -202,14 +202,26 @@ class MppPublicationTest { } @Test - fun `test that no sourcesElements should be exposed when sources are not published`() { + fun `test that no sourcesElements should be consumable when sources are published`() { + kotlin.linuxX64("linux") + kotlin.withSourcesJar(publish = true) + + project.evaluate() + kotlin.targets.forEach { + val sourcesElements = project.configurations.getByName(it.sourcesElementsConfigurationName) + if (!sourcesElements.isCanBeConsumed) fail("Configuration '${it.sourcesElementsConfigurationName}' should be consumable") + } + } + + @Test + fun `test that no sourcesElements should be consumable when sources are not published`() { kotlin.linuxX64("linux") kotlin.withSourcesJar(publish = false) project.evaluate() kotlin.targets.forEach { - if (it.sourcesElementsConfigurationName in project.configurations.names) - fail("Configuration '${it.sourcesElementsConfigurationName}' should not be created") + val sourcesElements = project.configurations.getByName(it.sourcesElementsConfigurationName) + if (sourcesElements.isCanBeConsumed) fail("Configuration '${it.sourcesElementsConfigurationName}' should not be consumable") } }