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.
*/
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.target.HostManager
import org.junit.Test
import org.junit.jupiter.api.DisplayName
open class CommonizerHierarchicalIT : BaseGradleIT() {
override val defaultGradleVersion: GradleVersionRequired = GradleVersionRequired.FOR_MPP_SUPPORT
@DisplayName("K/N tests for hierarchical commonizer")
@NativeGradlePluginTests
open class CommonizerHierarchicalIT : KGPBaseTest() {
@Test
fun `test commonizeHierarchically metadata compilations`() {
with(Project("commonizeHierarchically")) {
@DisplayName("Commonize hierarchically metadata compilations")
@GradleTest
fun testCommonizeHierarchicallyMetadataCompilations(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchically", gradleVersion) {
if (HostManager.hostIsMac) {
build(":p1:compileIosMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/iosMain/klib/p1_iosMain.klib")
assertFileInProjectExists("p1/build/classes/kotlin/metadata/iosMain/klib/p1_iosMain.klib")
assertNoDuplicateLibraryWarning()
}
build(":p1:compileAppleMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/appleMain/klib/p1_appleMain.klib")
assertFileInProjectExists("p1/build/classes/kotlin/metadata/appleMain/klib/p1_appleMain.klib")
assertNoDuplicateLibraryWarning()
}
}
build(":p1:compileLinuxMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/linuxMain/klib/p1_linuxMain.klib")
assertFileInProjectExists("p1/build/classes/kotlin/metadata/linuxMain/klib/p1_linuxMain.klib")
assertNoDuplicateLibraryWarning()
}
build(":p1:compileAppleAndLinuxMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/appleAndLinuxMain/klib/p1_appleAndLinuxMain.klib")
assertFileInProjectExists("p1/build/classes/kotlin/metadata/appleAndLinuxMain/klib/p1_appleAndLinuxMain.klib")
assertNoDuplicateLibraryWarning()
}
build(":p1:compileNativeMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/nativeMain/klib/p1_nativeMain.klib")
assertFileInProjectExists("p1/build/classes/kotlin/metadata/nativeMain/klib/p1_nativeMain.klib")
assertNoDuplicateLibraryWarning()
}
build(":p1:compileConcurrentMainKotlinMetadata") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/metadata/concurrentMain/default")
assertDirectoryInProjectExists("p1/build/classes/kotlin/metadata/concurrentMain/default")
assertNoDuplicateLibraryWarning()
}
}
}
@Test
fun `test commonizeHierarchically Klibrary compilations`() {
with(Project("commonizeHierarchically")) {
@DisplayName("Commonize hierarchically Klibrary compilations")
@GradleTest
fun testCommonizeHierarchicallyKlibraryCompilations(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchically", gradleVersion) {
if (HostManager.hostIsMac) {
build(":p1:iosArm64MainKlibrary", ":p1:iosX64MainKlibrary", ":p1:macosX64MainKlibrary", ":p1:macosArm64MainKLibrary") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/iosArm64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/iosX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/macosX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/macosArm64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/iosArm64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/iosX64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/macosX64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/macosArm64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning()
}
}
build(":p1:linuxX64MainKlibrary", ":p1:linuxArm64MainKlibrary") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/linuxX64/main/klib/p1.klib")
assertFileExists("p1/build/classes/kotlin/linuxArm64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/linuxX64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/linuxArm64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning()
}
build(":p1:mingwX64MainKlibrary") {
assertSuccessful()
assertFileExists("p1/build/classes/kotlin/mingwX64/main/klib/p1.klib")
assertFileInProjectExists("p1/build/classes/kotlin/mingwX64/main/klib/p1.klib")
assertNoDuplicateLibraryWarning()
}
}
}
@Test
fun `test commonizeHierarchicallyMultiModule`() {
with(Project("commonizeHierarchicallyMultiModule")) {
@DisplayName("Commonize hierarchically multi module")
@GradleTest
fun testCommonizeHierarchicallyMultiModule(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchicallyMultiModule", gradleVersion) {
build("assemble") {
assertSuccessful()
assertTasksExecuted(":p1:commonizeCInterop")
assertTasksExecuted(":p2:commonizeCInterop")
assertTasksExecuted(":p3:commonizeCInterop")
@@ -99,57 +95,56 @@ open class CommonizerHierarchicalIT : BaseGradleIT() {
`"w: Could not find \"commonizeHierarchicallyMultiModule:p1-cinterop-withPosix\" in "`
Since commonized cinterops are published now, we expect no such 'Could not find' message anymore
*/
assertNotContains("Could not find")
assertOutputDoesNotContain("Could not find")
}
}
}
@Test
fun `test platform dependencies on leaf source sets`() {
with(Project("commonizeHierarchicallyPlatformDependencies")) {
@DisplayName("Platform dependencies on leaf source sets")
@GradleTest
fun testPlatformDependenciesOnLeafSourceSets(gradleVersion: GradleVersion) {
nativeProject("commonizeHierarchicallyPlatformDependencies", gradleVersion) {
build(":checkPlatformDependencies") {
val klibPlatform = "${File.separator}klib${File.separator}platform${File.separator}".replace("\\", "\\\\")
assertSuccessful()
assertTasksExecuted(":commonizeNativeDistribution")
assertTasksExecuted(":checkLinuxX64MainPlatformDependencies")
assertTasksExecuted(":checkLinuxArm64MainPlatformDependencies")
assertContainsRegex(Regex(""".*linuxX64Main.*$klibPlatform.*[Pp]osix.*"""))
assertContainsRegex(Regex(""".*linuxArm64Main.*$klibPlatform.*[Pp]osix.*"""))
assertOutputContains(Regex(""".*linuxX64Main.*$klibPlatform.*[Pp]osix.*"""))
assertOutputContains(Regex(""".*linuxArm64Main.*$klibPlatform.*[Pp]osix.*"""))
}
}
}
@Test
fun `test KT-50592 - isolated jvm subproject - should not fail commonization`() {
with(Project("commonize-kt-50592-withIsolatedJvmSubproject")) {
setupWorkingDir(applyAndroidTestFixes = false) // Necessary to ensure separated classpath
@DisplayName("KT-50592 - isolated jvm subproject - should not fail commonization")
@GradleTest
fun testIsolatedJvmSubprojectShouldNotFailCommonization(gradleVersion: GradleVersion) {
nativeProject("commonize-kt-50592-withIsolatedJvmSubproject", gradleVersion = gradleVersion) {
build("commonize") {
assertSuccessful()
assertTasksExecuted(":commonizeNativeDistribution")
}
}
}
@Test
fun `test KT-51332 optimistic commonization`() {
with(Project("optimisticCommonization")) {
@DisplayName("KT-51332 - optimistic commonization")
@GradleTest
fun testOptimisticCommonization(gradleVersion: GradleVersion) {
nativeProject("optimisticCommonization", gradleVersion = gradleVersion) {
build(":compileCommonMainKotlinMetadata") {
assertNotContains("Unresolved reference")
assertSuccessful()
assertOutputDoesNotContain("Unresolved reference")
}
}
}
@Test
fun `test KT-52050 - DIR retains CPointed supertype`() {
with(Project("commonize-kt-52050-DIR-supertype")) {
@DisplayName("KT-52050 - DIR retains CPointed supertype")
@GradleTest
fun testDIRRetainsCPointedSupertype(gradleVersion: GradleVersion) {
nativeProject("commonize-kt-52050-DIR-supertype", gradleVersion = gradleVersion) {
build(":compileCommonMainKotlinMetadata") {
assertNotContains("Unresolved reference")
assertSuccessful()
assertOutputDoesNotContain("Unresolved reference")
}
}
}
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
class K2CommonizerHierarchicalIT : CommonizerHierarchicalIT() {
override fun defaultBuildOptions(): BuildOptions = super.defaultBuildOptions().copy(languageVersion = "2.0")
override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copy(languageVersion = "2.0")
}
@MppGradlePluginTests