[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:
committed by
Space
parent
db10732d6c
commit
153df1dd1a
+32
-8
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user