[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
This commit is contained in:
sebastian.sellmair
2021-07-23 11:46:39 +02:00
committed by Space
parent db10732d6c
commit 153df1dd1a
3 changed files with 37 additions and 14 deletions
@@ -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()
}
}
@@ -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)
}
}
@@ -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