Migrated CommonizerHierarchicalIT to new test dsl (junit 5 and gradle test kit)
This commit is contained in:
committed by
Space Team
parent
4695dca056
commit
2f63c6e1bd
+55
-60
@@ -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")
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user