Migrated CommonizerHierarchicalIT to new test dsl (junit 5 and gradle test kit)

This commit is contained in:
Dmitrii Krasnov
2023-06-14 15:44:20 +02:00
committed by Space Team
parent 4695dca056
commit 2f63c6e1bd
2 changed files with 56 additions and 61 deletions
@@ -1,95 +1,91 @@
/* /*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.gradle package org.jetbrains.kotlin.gradle
import org.gradle.testkit.runner.BuildResult
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.Test import org.junit.jupiter.api.DisplayName
open class CommonizerHierarchicalIT : BaseGradleIT() { @DisplayName("K/N tests for hierarchical commonizer")
override val defaultGradleVersion: GradleVersionRequired = GradleVersionRequired.FOR_MPP_SUPPORT @NativeGradlePluginTests
open class CommonizerHierarchicalIT : KGPBaseTest() {
@Test @DisplayName("Commonize hierarchically metadata compilations")
fun `test commonizeHierarchically metadata compilations`() { @GradleTest
fun testCommonizeHierarchicallyMetadataCompilations(gradleVersion: GradleVersion) {
with(Project("commonizeHierarchically")) { nativeProject("commonizeHierarchically", gradleVersion) {
if (HostManager.hostIsMac) { if (HostManager.hostIsMac) {
build(":p1:compileIosMainKotlinMetadata") { build(":p1:compileIosMainKotlinMetadata") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/metadata/iosMain/klib/p1_iosMain.klib")
assertFileExists("p1/build/classes/kotlin/metadata/iosMain/klib/p1_iosMain.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
build(":p1:compileAppleMainKotlinMetadata") { build(":p1:compileAppleMainKotlinMetadata") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/metadata/appleMain/klib/p1_appleMain.klib")
assertFileExists("p1/build/classes/kotlin/metadata/appleMain/klib/p1_appleMain.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
} }
build(":p1:compileLinuxMainKotlinMetadata") { build(":p1:compileLinuxMainKotlinMetadata") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/metadata/linuxMain/klib/p1_linuxMain.klib")
assertFileExists("p1/build/classes/kotlin/metadata/linuxMain/klib/p1_linuxMain.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
build(":p1:compileAppleAndLinuxMainKotlinMetadata") { build(":p1:compileAppleAndLinuxMainKotlinMetadata") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/metadata/appleAndLinuxMain/klib/p1_appleAndLinuxMain.klib")
assertFileExists("p1/build/classes/kotlin/metadata/appleAndLinuxMain/klib/p1_appleAndLinuxMain.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
build(":p1:compileNativeMainKotlinMetadata") { build(":p1:compileNativeMainKotlinMetadata") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/metadata/nativeMain/klib/p1_nativeMain.klib")
assertFileExists("p1/build/classes/kotlin/metadata/nativeMain/klib/p1_nativeMain.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
build(":p1:compileConcurrentMainKotlinMetadata") { build(":p1:compileConcurrentMainKotlinMetadata") {
assertSuccessful() assertDirectoryInProjectExists("p1/build/classes/kotlin/metadata/concurrentMain/default")
assertFileExists("p1/build/classes/kotlin/metadata/concurrentMain/default")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
} }
} }
@Test @DisplayName("Commonize hierarchically Klibrary compilations")
fun `test commonizeHierarchically Klibrary compilations`() { @GradleTest
with(Project("commonizeHierarchically")) { fun testCommonizeHierarchicallyKlibraryCompilations(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchically", gradleVersion) {
if (HostManager.hostIsMac) { if (HostManager.hostIsMac) {
build(":p1:iosArm64MainKlibrary", ":p1:iosX64MainKlibrary", ":p1:macosX64MainKlibrary", ":p1:macosArm64MainKLibrary") { build(":p1:iosArm64MainKlibrary", ":p1:iosX64MainKlibrary", ":p1:macosX64MainKlibrary", ":p1:macosArm64MainKLibrary") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/iosArm64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/iosArm64/main/klib/p1.klib") assertFileInProjectExists("p1/build/classes/kotlin/iosX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/iosX64/main/klib/p1.klib") assertFileInProjectExists("p1/build/classes/kotlin/macosX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/macosX64/main/klib/p1.klib") assertFileInProjectExists("p1/build/classes/kotlin/macosArm64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/macosArm64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
} }
build(":p1:linuxX64MainKlibrary", ":p1:linuxArm64MainKlibrary") { build(":p1:linuxX64MainKlibrary", ":p1:linuxArm64MainKlibrary") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/linuxX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/linuxX64/main/klib/p1.klib") assertFileInProjectExists("p1/build/classes/kotlin/linuxArm64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/linuxArm64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
build(":p1:mingwX64MainKlibrary") { build(":p1:mingwX64MainKlibrary") {
assertSuccessful() assertFileInProjectExists("p1/build/classes/kotlin/mingwX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/mingwX64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning() assertNoDuplicateLibraryWarning()
} }
} }
} }
@Test @DisplayName("Commonize hierarchically multi module")
fun `test commonizeHierarchicallyMultiModule`() { @GradleTest
with(Project("commonizeHierarchicallyMultiModule")) { fun testCommonizeHierarchicallyMultiModule(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchicallyMultiModule", gradleVersion) {
build("assemble") { build("assemble") {
assertSuccessful()
assertTasksExecuted(":p1:commonizeCInterop") assertTasksExecuted(":p1:commonizeCInterop")
assertTasksExecuted(":p2:commonizeCInterop") assertTasksExecuted(":p2:commonizeCInterop")
assertTasksExecuted(":p3:commonizeCInterop") assertTasksExecuted(":p3:commonizeCInterop")
@@ -99,57 +95,56 @@ open class CommonizerHierarchicalIT : BaseGradleIT() {
`"w: Could not find \"commonizeHierarchicallyMultiModule:p1-cinterop-withPosix\" in "` `"w: Could not find \"commonizeHierarchicallyMultiModule:p1-cinterop-withPosix\" in "`
Since commonized cinterops are published now, we expect no such 'Could not find' message anymore Since commonized cinterops are published now, we expect no such 'Could not find' message anymore
*/ */
assertNotContains("Could not find") assertOutputDoesNotContain("Could not find")
} }
} }
} }
@Test @DisplayName("Platform dependencies on leaf source sets")
fun `test platform dependencies on leaf source sets`() { @GradleTest
with(Project("commonizeHierarchicallyPlatformDependencies")) { fun testPlatformDependenciesOnLeafSourceSets(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchicallyPlatformDependencies", gradleVersion) {
build(":checkPlatformDependencies") { build(":checkPlatformDependencies") {
val klibPlatform = "${File.separator}klib${File.separator}platform${File.separator}".replace("\\", "\\\\") val klibPlatform = "${File.separator}klib${File.separator}platform${File.separator}".replace("\\", "\\\\")
assertSuccessful()
assertTasksExecuted(":commonizeNativeDistribution") assertTasksExecuted(":commonizeNativeDistribution")
assertTasksExecuted(":checkLinuxX64MainPlatformDependencies") assertTasksExecuted(":checkLinuxX64MainPlatformDependencies")
assertTasksExecuted(":checkLinuxArm64MainPlatformDependencies") assertTasksExecuted(":checkLinuxArm64MainPlatformDependencies")
assertContainsRegex(Regex(""".*linuxX64Main.*$klibPlatform.*[Pp]osix.*""")) assertOutputContains(Regex(""".*linuxX64Main.*$klibPlatform.*[Pp]osix.*"""))
assertContainsRegex(Regex(""".*linuxArm64Main.*$klibPlatform.*[Pp]osix.*""")) assertOutputContains(Regex(""".*linuxArm64Main.*$klibPlatform.*[Pp]osix.*"""))
} }
} }
} }
@Test @DisplayName("KT-50592 - isolated jvm subproject - should not fail commonization")
fun `test KT-50592 - isolated jvm subproject - should not fail commonization`() { @GradleTest
with(Project("commonize-kt-50592-withIsolatedJvmSubproject")) { fun testIsolatedJvmSubprojectShouldNotFailCommonization(gradleVersion: GradleVersion) {
setupWorkingDir(applyAndroidTestFixes = false) // Necessary to ensure separated classpath nativeProject("commonize-kt-50592-withIsolatedJvmSubproject", gradleVersion = gradleVersion) {
build("commonize") { build("commonize") {
assertSuccessful()
assertTasksExecuted(":commonizeNativeDistribution") assertTasksExecuted(":commonizeNativeDistribution")
} }
} }
} }
@Test @DisplayName("KT-51332 - optimistic commonization")
fun `test KT-51332 optimistic commonization`() { @GradleTest
with(Project("optimisticCommonization")) { fun testOptimisticCommonization(gradleVersion: GradleVersion) {
nativeProject("optimisticCommonization", gradleVersion = gradleVersion) {
build(":compileCommonMainKotlinMetadata") { build(":compileCommonMainKotlinMetadata") {
assertNotContains("Unresolved reference") assertOutputDoesNotContain("Unresolved reference")
assertSuccessful()
} }
} }
} }
@Test @DisplayName("KT-52050 - DIR retains CPointed supertype")
fun `test KT-52050 - DIR retains CPointed supertype`() { @GradleTest
with(Project("commonize-kt-52050-DIR-supertype")) { fun testDIRRetainsCPointedSupertype(gradleVersion: GradleVersion) {
nativeProject("commonize-kt-52050-DIR-supertype", gradleVersion = gradleVersion) {
build(":compileCommonMainKotlinMetadata") { build(":compileCommonMainKotlinMetadata") {
assertNotContains("Unresolved reference") assertOutputDoesNotContain("Unresolved reference")
assertSuccessful()
} }
} }
} }
private fun CompiledProject.assertNoDuplicateLibraryWarning() = assertNotContains("library included more than once") private fun BuildResult.assertNoDuplicateLibraryWarning() = assertOutputDoesNotContain("library included more than once")
} }
@@ -35,7 +35,7 @@ class K2CommonizerIT : CommonizerIT() {
@Ignore @Ignore
class K2CommonizerHierarchicalIT : CommonizerHierarchicalIT() { class K2CommonizerHierarchicalIT : CommonizerHierarchicalIT() {
override fun defaultBuildOptions(): BuildOptions = super.defaultBuildOptions().copy(languageVersion = "2.0") override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copy(languageVersion = "2.0")
} }
@MppGradlePluginTests @MppGradlePluginTests