[Gradle] Test that no extra attributes are copied to Java Configurations
^KT-31468
This commit is contained in:
+83
-50
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle
|
package org.jetbrains.kotlin.gradle
|
||||||
|
|
||||||
|
import org.gradle.api.attributes.AttributeContainer
|
||||||
import org.gradle.api.attributes.Category
|
import org.gradle.api.attributes.Category
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.kotlin.dsl.withType
|
import org.gradle.kotlin.dsl.withType
|
||||||
@@ -219,11 +220,10 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
class TestDisambiguationAttributePropagation {
|
||||||
fun `test that jvm target attributes are propagated to java configurations`() {
|
private val disambiguationAttribute = org.gradle.api.attributes.Attribute.of("disambiguationAttribute", String::class.java)
|
||||||
val disambiguationAttribute = org.gradle.api.attributes.Attribute.of("disambiguationAttribute", String::class.java)
|
|
||||||
val project = buildProjectWithMPP {
|
|
||||||
|
|
||||||
|
private val mppProject get() = buildProjectWithMPP {
|
||||||
kotlin {
|
kotlin {
|
||||||
jvm("plainJvm") {
|
jvm("plainJvm") {
|
||||||
attributes { attribute(disambiguationAttribute, "plainJvm") }
|
attributes { attribute(disambiguationAttribute, "plainJvm") }
|
||||||
@@ -236,8 +236,12 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val javaProject get() = buildProject {
|
||||||
|
project.plugins.apply("java-library")
|
||||||
|
}
|
||||||
|
|
||||||
//NB: There is no "api" configuration registered by Java Plugin
|
//NB: There is no "api" configuration registered by Java Plugin
|
||||||
val javaConfigurations = listOf(
|
private val javaConfigurations = listOf(
|
||||||
"compileClasspath",
|
"compileClasspath",
|
||||||
"runtimeClasspath",
|
"runtimeClasspath",
|
||||||
"implementation",
|
"implementation",
|
||||||
@@ -245,52 +249,81 @@ class ConfigurationsTest : MultiplatformExtensionTest() {
|
|||||||
"runtimeOnly"
|
"runtimeOnly"
|
||||||
)
|
)
|
||||||
|
|
||||||
val kotlinJvmConfigurations = listOf(
|
@Test
|
||||||
"jvmWithJavaCompileClasspath",
|
fun `test that jvm target attributes are propagated to java configurations`() {
|
||||||
"jvmWithJavaRuntimeClasspath",
|
val kotlinJvmConfigurations = listOf(
|
||||||
"jvmWithJavaApi",
|
"jvmWithJavaCompileClasspath",
|
||||||
"jvmWithJavaImplementation",
|
"jvmWithJavaRuntimeClasspath",
|
||||||
"jvmWithJavaCompileOnly",
|
"jvmWithJavaCompilationApi",
|
||||||
"jvmWithJavaRuntimeOnly",
|
"jvmWithJavaCompilationImplementation",
|
||||||
)
|
"jvmWithJavaCompilationCompileOnly",
|
||||||
|
"jvmWithJavaCompilationRuntimeOnly",
|
||||||
val outgoingConfigurations = listOf(
|
|
||||||
"jvmWithJavaApiElements",
|
|
||||||
"jvmWithJavaRuntimeElements",
|
|
||||||
)
|
|
||||||
|
|
||||||
val testJavaConfigurations = listOf(
|
|
||||||
"testCompileClasspath",
|
|
||||||
"testCompileOnly",
|
|
||||||
"testImplementation",
|
|
||||||
"testRuntimeClasspath",
|
|
||||||
"testRuntimeOnly"
|
|
||||||
)
|
|
||||||
|
|
||||||
val jvmWithJavaTestConfigurations = listOf(
|
|
||||||
"jvmWithJavaTestCompileClasspath",
|
|
||||||
"jvmWithJavaTestRuntimeClasspath",
|
|
||||||
"jvmWithJavaTestApi",
|
|
||||||
"jvmWithJavaTestCompileOnly",
|
|
||||||
"jvmWithJavaTestImplementation",
|
|
||||||
"jvmWithJavaTestRuntimeOnly"
|
|
||||||
)
|
|
||||||
|
|
||||||
val expectedConfigurationsWithDisambiguationAttribute = javaConfigurations +
|
|
||||||
kotlinJvmConfigurations +
|
|
||||||
outgoingConfigurations +
|
|
||||||
testJavaConfigurations +
|
|
||||||
jvmWithJavaTestConfigurations
|
|
||||||
|
|
||||||
with(project.evaluate()) {
|
|
||||||
val actualConfigurationsWithDisambiguationAttribute = configurations
|
|
||||||
.filter { it.attributes.getAttribute(disambiguationAttribute) == "jvmWithJava" }
|
|
||||||
.map { it.name }
|
|
||||||
|
|
||||||
assertEquals(
|
|
||||||
expectedConfigurationsWithDisambiguationAttribute.sorted(),
|
|
||||||
actualConfigurationsWithDisambiguationAttribute.sorted()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val outgoingConfigurations = listOf(
|
||||||
|
"jvmWithJavaApiElements",
|
||||||
|
"jvmWithJavaRuntimeElements",
|
||||||
|
)
|
||||||
|
|
||||||
|
val testJavaConfigurations = listOf(
|
||||||
|
"testCompileClasspath",
|
||||||
|
"testCompileOnly",
|
||||||
|
"testImplementation",
|
||||||
|
"testRuntimeClasspath",
|
||||||
|
"testRuntimeOnly"
|
||||||
|
)
|
||||||
|
|
||||||
|
val jvmWithJavaTestConfigurations = listOf(
|
||||||
|
"jvmWithJavaTestCompileClasspath",
|
||||||
|
"jvmWithJavaTestRuntimeClasspath",
|
||||||
|
"jvmWithJavaTestCompilationApi",
|
||||||
|
"jvmWithJavaTestCompilationCompileOnly",
|
||||||
|
"jvmWithJavaTestCompilationImplementation",
|
||||||
|
"jvmWithJavaTestCompilationRuntimeOnly"
|
||||||
|
)
|
||||||
|
|
||||||
|
val expectedConfigurationsWithDisambiguationAttribute = javaConfigurations +
|
||||||
|
kotlinJvmConfigurations +
|
||||||
|
outgoingConfigurations +
|
||||||
|
testJavaConfigurations +
|
||||||
|
jvmWithJavaTestConfigurations
|
||||||
|
|
||||||
|
with(mppProject.evaluate()) {
|
||||||
|
val actualConfigurationsWithDisambiguationAttribute = configurations
|
||||||
|
.filter { it.attributes.getAttribute(disambiguationAttribute) == "jvmWithJava" }
|
||||||
|
.map { it.name }
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
expectedConfigurationsWithDisambiguationAttribute.sorted(),
|
||||||
|
actualConfigurationsWithDisambiguationAttribute.sorted()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test that no new attributes are added to java configurations`() {
|
||||||
|
val evaluatedJavaProject = javaProject.evaluate()
|
||||||
|
val evaluatedMppProject = mppProject.evaluate()
|
||||||
|
|
||||||
|
fun AttributeContainer.toStringMap(): Map<String, String> =
|
||||||
|
keySet().associate { it.name to getAttribute(it).toString() }
|
||||||
|
|
||||||
|
for (configurationName in javaConfigurations) {
|
||||||
|
val expectedAttributes = evaluatedJavaProject
|
||||||
|
.configurations
|
||||||
|
.getByName(configurationName)
|
||||||
|
.attributes.toStringMap()
|
||||||
|
|
||||||
|
val actualAttributes = evaluatedMppProject
|
||||||
|
.configurations
|
||||||
|
.getByName(configurationName)
|
||||||
|
.attributes.toStringMap()
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
expectedAttributes,
|
||||||
|
actualAttributes - disambiguationAttribute.name
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user