From 153df1dd1aa706468d3e822650a2d60a65bfd193 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Fri, 23 Jul 2021 11:46:39 +0200 Subject: [PATCH] [Gradle] CommonizerIT: Parameterize test on commonizeMultipleCInteropsWithTests Testing the project w/ and w/o the commonon mistake of declaring dependsOn edges from test to main source sets ^KT-47775 ^KT-47053 --- .../jetbrains/kotlin/gradle/CommonizerIT.kt | 40 +++++++++++++++---- .../reportSourceSetCommonizerDependencies.kt | 9 +++-- .../CInteropCommonizerDependencies.kt | 2 - 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index e34929eaf7a..e316237429e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -354,15 +354,32 @@ class CommonizerIT : BaseGradleIT() { } } + @Test + fun `test multiple cinterops with test source sets and compilations - test source sets depending on main`() { + `test multiple cinterops with test source sets and compilations`(true) + } + @Test fun `test multiple cinterops with test source sets and compilations`() { + `test multiple cinterops with test source sets and compilations`(false) + } + + private fun `test multiple cinterops with test source sets and compilations`(testSourceSetsDependingOnMain: Boolean) { with(Project("commonizeMultipleCInteropsWithTests", minLogLevel = INFO)) { val isUnix = HostManager.hostIsMac || HostManager.hostIsLinux val isMac = HostManager.hostIsMac val isWindows = HostManager.hostIsMingw - reportSourceSetCommonizerDependencies(this) { + val testSourceSetsDependingOnMainParameter = "-PtestSourceSetsDependingOnMain=$testSourceSetsDependingOnMain" + + fun CompiledProject.assertTestSourceSetsDependingOnMainParameter() { + val message = "testSourceSetsDependingOnMain is set" + if (testSourceSetsDependingOnMain) assertContains(message) else assertNotContains(message) + } + + reportSourceSetCommonizerDependencies(this, testSourceSetsDependingOnMainParameter) { + it.assertTestSourceSetsDependingOnMainParameter() getCommonizerDependencies("nativeMain").onlyCInterops().apply { assertDependencyFilesMatches(".*nativeHelper", ".*unixHelper".takeIf { isUnix }) assertTargetOnAllDependencies( @@ -453,38 +470,45 @@ class CommonizerIT : BaseGradleIT() { } } - build(":assemble") { + build(":assemble", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() assertTasksUpToDate(":commonizeNativeDistribution") assertTasksUpToDate(":commonizeCInterop") } - build(":compileNativeMainKotlinMetadata") { + build(":compileNativeMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } if (isUnix) { - build(":compileUnixMainKotlinMetadata") { + build(":compileUnixMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } - build(":compileLinuxMainKotlinMetadata") { + build(":compileLinuxMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } } if (isMac) { - build(":compileAppleMainKotlinMetadata") { + build(":compileAppleMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } - build(":compileIosMainKotlinMetadata") { + build(":compileIosMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } } if (isWindows) { - build(":compileWindowsMainKotlinMetadata") { + build(":compileWindowsMainKotlinMetadata", testSourceSetsDependingOnMainParameter) { + assertTestSourceSetsDependingOnMainParameter() assertSuccessful() } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/reportSourceSetCommonizerDependencies.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/reportSourceSetCommonizerDependencies.kt index efdd3866446..b070ac76899 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/reportSourceSetCommonizerDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/reportSourceSetCommonizerDependencies.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.commonizer.parseCommonizerTargetOrNull import org.jetbrains.kotlin.commonizer.util.transitiveClosure import org.jetbrains.kotlin.gradle.BaseGradleIT +import org.jetbrains.kotlin.gradle.BaseGradleIT.CompiledProject import java.io.File import javax.annotation.RegEx import kotlin.test.fail @@ -88,7 +89,8 @@ fun interface WithSourceSetCommonizerDependencies { fun BaseGradleIT.reportSourceSetCommonizerDependencies( project: BaseGradleIT.Project, - test: WithSourceSetCommonizerDependencies.() -> Unit + vararg additionalBuildParameters: String, + test: WithSourceSetCommonizerDependencies.(compiledProject: CompiledProject) -> Unit ) = with(project) { if (!projectDir.exists()) { @@ -102,8 +104,7 @@ fun BaseGradleIT.reportSourceSetCommonizerDependencies( } build( - ":reportCommonizerSourceSetDependencies", - options = defaultBuildOptions().copy(forceOutputToStdout = true) + *(listOf(":reportCommonizerSourceSetDependencies") + additionalBuildParameters).toTypedArray(), ) { assertSuccessful() @@ -126,7 +127,7 @@ fun BaseGradleIT.reportSourceSetCommonizerDependencies( SourceSetCommonizerDependencies(sourceSetName, dependencies.toSet()) } - withSourceSetCommonizerDependencies.test() + withSourceSetCommonizerDependencies.test(this) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt index db0e371e011..8db33f68afa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerDependencies.kt @@ -14,8 +14,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import org.jetbrains.kotlin.gradle.utils.filesProvider import java.io.File -// TODO NOW: Integration tests! - internal fun Project.setupCInteropCommonizerDependencies() { val kotlin = this.multiplatformExtensionOrNull ?: return