From 8bfe5691e61114c38a34181e71582450a3b4c42d Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Thu, 28 Jul 2022 09:44:32 +0200 Subject: [PATCH] [Gradle] Add tests for KT-31468 Targets disambiguation doesn't work if a depending multiplatform module uses `withJava()` mode ^KT-31468 --- .../kotlin/gradle/HierarchicalMppIT.kt | 23 ++++++ .../build.gradle.kts | 10 +++ .../dependsOnJvmWithJava/build.gradle.kts | 20 +++++ .../src/jvmMain/java/test/MainJava.java | 8 ++ .../jvmMain/kotlin/jvmWithJavaKotlinTest.kt | 6 ++ .../src/jvmTest/java/test/MainJavaTest.java | 8 ++ .../jvmTest/kotlin/jvmWithJavaKotlinTest.kt | 6 ++ .../dependsOnPlainJvm/build.gradle.kts | 20 +++++ .../src/jvmMain/java/test/MainJava.java | 7 ++ .../jvmMain/kotlin/jvmWithJavaKotlinTest.kt | 5 ++ .../src/jvmTest/java/test/MainJavaTest.java | 7 ++ .../jvmTest/kotlin/jvmWithJavaKotlinTest.kt | 5 ++ .../lib/build.gradle.kts | 16 ++++ .../java/test/JvmWithJava.java | 5 ++ .../kotlin/JvmWithJavaKotlin.kt | 4 + .../src/plainJvmMain/kotlin/PlainJvmKotlin.kt | 4 + .../settings.gradle.kts | 1 + .../kotlin/gradle/ConfigurationsTest.kt | 75 +++++++++++++++++++ 18 files changed, 230 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/java/test/MainJava.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/java/test/MainJavaTest.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/java/test/MainJava.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/java/test/MainJavaTest.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/java/test/JvmWithJava.java create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/kotlin/JvmWithJavaKotlin.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/plainJvmMain/kotlin/PlainJvmKotlin.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/settings.gradle.kts diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 179661e6827..85f7bf3a3d6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -273,6 +273,29 @@ class HierarchicalMppIT : KGPBaseTest() { ) } + @GradleTest + @DisplayName("Test that disambiguation attribute of Kotlin JVM Target is propagated to Java configurations") + fun testMultipleJvmTargetsWithJavaAndDisambiguationAttributeKt31468(gradleVersion: GradleVersion) { + project( + projectName = "kt-31468-multiple-jvm-targets-with-java", + gradleVersion = gradleVersion + ) { + build("assemble", "testClasses") { + assertTasksExecuted( + ":dependsOnPlainJvm:compileKotlinJvm", + ":dependsOnPlainJvm:compileJava", + ":dependsOnJvmWithJava:compileKotlinJvm", + ":dependsOnJvmWithJava:compileJava", + + ":dependsOnPlainJvm:compileTestKotlinJvm", + ":dependsOnPlainJvm:compileTestJava", + ":dependsOnJvmWithJava:compileTestKotlinJvm", + ":dependsOnJvmWithJava:compileTestJava", + ) + } + } + } + private fun publishThirdPartyLib( projectName: String = "third-party-lib".withPrefix, withGranularMetadata: Boolean, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/build.gradle.kts new file mode 100644 index 00000000000..f556befce79 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + kotlin("multiplatform").apply(false) +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/build.gradle.kts new file mode 100644 index 00000000000..5ce09d1082d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + kotlin("multiplatform") +} + +val disambiguationAttribute = Attribute.of("disambiguationAttribute", String::class.java) + +kotlin { + jvm { + withJava() + attributes { attribute(disambiguationAttribute, "jvmWithJava") } + } + + sourceSets { + val jvmMain by getting { + dependencies { + api(project(":lib")) + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/java/test/MainJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/java/test/MainJava.java new file mode 100644 index 00000000000..abcb87d4d72 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/java/test/MainJava.java @@ -0,0 +1,8 @@ +package test; + +public class MainJava { + public static void main() { + JvmWithJava obj1 = new JvmWithJava(); + JvmWithJavaKotlin obj2 = new JvmWithJavaKotlin(); + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt new file mode 100644 index 00000000000..2ab468f85e1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt @@ -0,0 +1,6 @@ +package test + +fun main() { + val kotlin = JvmWithJavaKotlin() + val java = JvmWithJava() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/java/test/MainJavaTest.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/java/test/MainJavaTest.java new file mode 100644 index 00000000000..4565d0d70f7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/java/test/MainJavaTest.java @@ -0,0 +1,8 @@ +package test; + +public class MainJavaTest { + public static void main() { + JvmWithJava obj1 = new JvmWithJava(); + JvmWithJavaKotlin obj2 = new JvmWithJavaKotlin(); + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt new file mode 100644 index 00000000000..2ab468f85e1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnJvmWithJava/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt @@ -0,0 +1,6 @@ +package test + +fun main() { + val kotlin = JvmWithJavaKotlin() + val java = JvmWithJava() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/build.gradle.kts new file mode 100644 index 00000000000..946713cc7fd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + kotlin("multiplatform") +} + +val disambiguationAttribute = Attribute.of("disambiguationAttribute", String::class.java) + +kotlin { + jvm { + withJava() + attributes { attribute(disambiguationAttribute, "plainJvm") } + } + + sourceSets { + val commonMain by getting { + dependencies { + api(project(":lib")) + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/java/test/MainJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/java/test/MainJava.java new file mode 100644 index 00000000000..e451aaf2426 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/java/test/MainJava.java @@ -0,0 +1,7 @@ +package test; + +public class MainJava { + public static void main() { + PlainJvmKotlin obj = new PlainJvmKotlin(); + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt new file mode 100644 index 00000000000..5a05aa9932c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmMain/kotlin/jvmWithJavaKotlinTest.kt @@ -0,0 +1,5 @@ +package test + +fun main() { + val kotlin = PlainJvmKotlin() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/java/test/MainJavaTest.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/java/test/MainJavaTest.java new file mode 100644 index 00000000000..ef74a741adb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/java/test/MainJavaTest.java @@ -0,0 +1,7 @@ +package test; + +public class MainJavaTest { + public static void main() { + PlainJvmKotlin obj = new PlainJvmKotlin(); + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt new file mode 100644 index 00000000000..5a05aa9932c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/dependsOnPlainJvm/src/jvmTest/kotlin/jvmWithJavaKotlinTest.kt @@ -0,0 +1,5 @@ +package test + +fun main() { + val kotlin = PlainJvmKotlin() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/build.gradle.kts new file mode 100644 index 00000000000..60cf55c6ba9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + kotlin("multiplatform") +} + +val disambiguationAttribute = Attribute.of("disambiguationAttribute", String::class.java) + +kotlin { + jvm("plainJvm") { + attributes { attribute(disambiguationAttribute, "plainJvm") } + } + + jvm("jvmWithJava") { + withJava() + attributes { attribute(disambiguationAttribute, "jvmWithJava") } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/java/test/JvmWithJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/java/test/JvmWithJava.java new file mode 100644 index 00000000000..908a3cbe793 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/java/test/JvmWithJava.java @@ -0,0 +1,5 @@ +package test; + +public class JvmWithJava { + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/kotlin/JvmWithJavaKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/kotlin/JvmWithJavaKotlin.kt new file mode 100644 index 00000000000..5d47ba3ac32 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/jvmWithJavaMain/kotlin/JvmWithJavaKotlin.kt @@ -0,0 +1,4 @@ +package test + +class JvmWithJavaKotlin { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/plainJvmMain/kotlin/PlainJvmKotlin.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/plainJvmMain/kotlin/PlainJvmKotlin.kt new file mode 100644 index 00000000000..f20d1bab8b7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/lib/src/plainJvmMain/kotlin/PlainJvmKotlin.kt @@ -0,0 +1,4 @@ +package test + +class PlainJvmKotlin { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/settings.gradle.kts new file mode 100644 index 00000000000..38e4d141fd2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-31468-multiple-jvm-targets-with-java/settings.gradle.kts @@ -0,0 +1 @@ +include("lib", "dependsOnPlainJvm", "dependsOnJvmWithJava") \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt index 1b54edd4d63..2954ee6a7e1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/ConfigurationsTest.kt @@ -218,4 +218,79 @@ class ConfigurationsTest : MultiplatformExtensionTest() { } } } + + @Test + fun `test that jvm target attributes are propagated to java configurations`() { + val disambiguationAttribute = org.gradle.api.attributes.Attribute.of("disambiguationAttribute", String::class.java) + val project = buildProjectWithMPP { + + kotlin { + jvm("plainJvm") { + attributes { attribute(disambiguationAttribute, "plainJvm") } + } + + jvm("jvmWithJava") { + withJava() + attributes { attribute(disambiguationAttribute, "jvmWithJava") } + } + } + } + + //NB: There is no "api" configuration registered by Java Plugin + val javaConfigurations = listOf( + "compileClasspath", + "runtimeClasspath", + "implementation", + "compileOnly", + "runtimeOnly" + ) + + val kotlinJvmConfigurations = listOf( + "jvmWithJavaCompileClasspath", + "jvmWithJavaRuntimeClasspath", + "jvmWithJavaApi", + "jvmWithJavaImplementation", + "jvmWithJavaCompileOnly", + "jvmWithJavaRuntimeOnly", + ) + + 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() + ) + } + } } \ No newline at end of file