diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt index 0283807e6ad..f57aa8d8918 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt @@ -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") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt index 3dd4a9e78e6..3ad2f69e91e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/K2Tests.kt @@ -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