From e8bd8a938fe323f4b11e1ee53d015f2e1ccdfa30 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 3 May 2021 16:58:27 +0200 Subject: [PATCH] Implement HierarchicalMppIT.testNativeLeafTestSourceSetsKt46417 to cover ^KT-46417 --- .../kotlin/gradle/HierarchicalMppIT.kt | 32 +++++++++++++------ .../build.gradle.kts | 11 +++++++ .../gradle.properties | 1 + .../p1/build.gradle.kts | 8 +++++ .../p2/build.gradle.kts | 13 ++++++++ .../settings.gradle.kts | 14 ++++++++ 6 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/gradle.properties create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p1/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p2/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/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 72ea3724dca..181284926aa 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 @@ -19,6 +19,7 @@ import java.io.File import java.util.zip.ZipFile import kotlin.test.Test import kotlin.test.assertEquals +import kotlin.test.assertNotNull import kotlin.test.assertTrue class HierarchicalMppIT : BaseGradleIT() { @@ -505,12 +506,13 @@ class HierarchicalMppIT : BaseGradleIT() { } @Test - fun testCompileOnlyDependencyProcessingForMetadataCompilations() = with(transformNativeTestProjectWithPluginDsl("hierarchical-mpp-project-dependency")) { - publishThirdPartyLib(withGranularMetadata = true) + fun testCompileOnlyDependencyProcessingForMetadataCompilations() = + with(transformNativeTestProjectWithPluginDsl("hierarchical-mpp-project-dependency")) { + publishThirdPartyLib(withGranularMetadata = true) - gradleBuildScript("my-lib-foo").appendText("\ndependencies { \"jvmAndJsMainCompileOnly\"(kotlin(\"test-annotations-common\")) }") - projectDir.resolve("my-lib-foo/src/jvmAndJsMain/kotlin/UseCompileOnlyDependency.kt").writeText( - """ + gradleBuildScript("my-lib-foo").appendText("\ndependencies { \"jvmAndJsMainCompileOnly\"(kotlin(\"test-annotations-common\")) }") + projectDir.resolve("my-lib-foo/src/jvmAndJsMain/kotlin/UseCompileOnlyDependency.kt").writeText( + """ import kotlin.test.Test class UseCompileOnlyDependency { @@ -518,12 +520,12 @@ class HierarchicalMppIT : BaseGradleIT() { fun myTest() = Unit } """.trimIndent() - ) + ) - build(":my-lib-foo:compileJvmAndJsMainKotlinMetadata") { - assertSuccessful() + build(":my-lib-foo:compileJvmAndJsMainKotlinMetadata") { + assertSuccessful() + } } - } @Test fun testHmppDependenciesInJsTests() { @@ -619,6 +621,18 @@ class HierarchicalMppIT : BaseGradleIT() { } } + @Test + fun testNativeLeafTestSourceSetsKt46417() { + with(Project("kt-46417-ios-test-source-sets")) { + testDependencyTransformations("p2") { reports -> + val report = reports.singleOrNull { it.sourceSetName == "iosArm64Test" && it.scope == "implementation" } + assertNotNull(report, "No single report for 'iosArm64' and implementation scope") + assertEquals(setOf("commonMain", "iosMain"), report.allVisibleSourceSets) + assertTrue(report.groupAndModule.endsWith(":p1")) + } + } + } + private fun Project.testDependencyTransformations( subproject: String? = null, check: CompiledProject.(reports: Iterable) -> Unit diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/build.gradle.kts new file mode 100644 index 00000000000..96c0433f12e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/build.gradle.kts @@ -0,0 +1,11 @@ +allprojects { + repositories { + mavenCentral() + google() + mavenLocal() + } +} + +plugins { + kotlin("multiplatform") apply false +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/gradle.properties new file mode 100644 index 00000000000..5947cb440c4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/gradle.properties @@ -0,0 +1 @@ +kotlin.mpp.enableGranularSourceSetsMetadata=true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p1/build.gradle.kts new file mode 100644 index 00000000000..24f904d9c4a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p1/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + jvm() + ios() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p2/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p2/build.gradle.kts new file mode 100644 index 00000000000..c783c0009ba --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/p2/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + jvm() + ios() + + val commonMain by sourceSets.getting + commonMain.dependencies { + implementation(project(":p1")) + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/settings.gradle.kts new file mode 100644 index 00000000000..1f2a7581563 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-46417-ios-test-source-sets/settings.gradle.kts @@ -0,0 +1,14 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } + val kotlin_version: String by settings + plugins { + kotlin("multiplatform").version(kotlin_version) + } +} + +include(":p1") +include(":p2") +