[Gradle] Add test to check consumable configurations have unique
attributes set. ^KT-55751 Verification Pending
This commit is contained in:
committed by
Space Team
parent
9804ea80c4
commit
fff24378f1
+46
@@ -23,11 +23,13 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.targets
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
|
||||
import org.jetbrains.kotlin.gradle.util.*
|
||||
import org.jetbrains.kotlin.gradle.utils.toMap
|
||||
import java.util.*
|
||||
import kotlin.test.*
|
||||
|
||||
@@ -555,4 +557,48 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
|
||||
assertFalse(isTestDependencyPresent("releaseUnitTestCompileClasspath"))
|
||||
assertFalse(isTestDependencyPresent("releaseUnitTestRuntimeClasspath"))
|
||||
}
|
||||
|
||||
// See KT-55751
|
||||
@Test
|
||||
fun `consumable configurations should have unique attribute set`() {
|
||||
val project = buildProjectWithMPP {
|
||||
plugins.apply("maven-publish")
|
||||
|
||||
val distinguishingAttribute = Attribute.of(String::class.java)
|
||||
kotlin {
|
||||
jvm { attributes { attribute(distinguishingAttribute, "jvm") } }
|
||||
jvm("jvm2") { attributes { attribute(distinguishingAttribute, "jvm2") } }
|
||||
|
||||
macosX64 {
|
||||
binaries.framework("main", listOf(NativeBuildType.DEBUG))
|
||||
}
|
||||
|
||||
linuxX64()
|
||||
|
||||
targets.filterIsInstance<KotlinNativeTarget>().forEach {
|
||||
it.binaries {
|
||||
sharedLib("main", listOf(NativeBuildType.DEBUG))
|
||||
staticLib("main", listOf(NativeBuildType.DEBUG))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
project.evaluate()
|
||||
|
||||
val duplicatedConsumableConfigurations = project.configurations
|
||||
.filter { it.isCanBeConsumed }
|
||||
.filterNot { it.attributes.isEmpty }
|
||||
.groupBy { it.attributes.toMap() }
|
||||
.values
|
||||
.filter { it.size > 1 }
|
||||
|
||||
if (duplicatedConsumableConfigurations.isNotEmpty()) {
|
||||
val msg = duplicatedConsumableConfigurations.joinToString(separator = "\n") { configs ->
|
||||
val list = configs.joinToString { it.name }
|
||||
" * $list"
|
||||
}
|
||||
fail("Following configurations have the same attributes:\n$msg")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user