[Gradle] Split K1/K2 integration tests

#KT-60588 In Progress
This commit is contained in:
Alexander.Likhachev
2023-08-18 16:20:33 +02:00
committed by Space Team
parent 0a612e4268
commit 196fb3e5f1
8 changed files with 134 additions and 44 deletions
@@ -14,7 +14,7 @@ import kotlin.io.path.exists
@DisplayName("Compiler plugin incremental compilation")
@OtherGradlePluginTests
open class CompilerPluginsIncrementalIT : KGPBaseTest() {
abstract class CompilerPluginsIncrementalIT : KGPBaseTest() {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copy(
incremental = true
@@ -23,7 +23,7 @@ open class CompilerPluginsIncrementalIT : KGPBaseTest() {
@DisabledOnOs(OS.WINDOWS, disabledReason = "Kotlin compiler holds an open file descriptor to plugin jar file")
@DisplayName("KT-38570: After changing compiler plugin code, next incremental build picks it up")
@GradleTest
internal fun afterChangeInPluginBuildDoesIncrementalProcessing(gradleVersion: GradleVersion) {
fun afterChangeInPluginBuildDoesIncrementalProcessing(gradleVersion: GradleVersion) {
project("incrementalChangeInPlugin".prefix, gradleVersion) {
build("assemble")
@@ -69,7 +69,24 @@ open class CompilerPluginsIncrementalIT : KGPBaseTest() {
private val String.prefix get() = "compilerPlugins/$this"
}
class CompilerPluginsK1IncrementalIT : CompilerPluginsIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class CompilerPluginsK2IncrementalIT : CompilerPluginsIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@DisplayName("Compiler plugin incremental compilation with precise compilation outputs backup")
class CompilerPluginsIncrementalWithPreciseBackupIT : CompilerPluginsIncrementalIT() {
abstract class CompilerPluginsIncrementalWithPreciseBackupIT : CompilerPluginsIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true)
}
@DisplayName("Compiler plugin incremental compilation with precise compilation outputs backup")
class CompilerPluginsK1IncrementalWithPreciseBackupIT : CompilerPluginsIncrementalWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class CompilerPluginsK2IncrementalWithPreciseBackupIT : CompilerPluginsIncrementalWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@@ -13,7 +13,7 @@ import java.nio.file.Path
import kotlin.io.path.*
@JsGradlePluginTests
open class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
abstract class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
override val defaultProjectName: String = "incrementalMultiproject"
override fun defaultProject(
@@ -151,24 +151,28 @@ open class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMu
}
}
open class IncrementalCompilationJsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectIT() {
abstract class IncrementalCompilationJsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true)
}
class IncrementalCompilationFirJsMultiProject : IncrementalCompilationJsMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(
languageVersion = "2.0"
)
class IncrementalCompilationK1JsMultiProject : IncrementalCompilationJsMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class IncrementalCompilationFirJsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(
languageVersion = "2.0"
)
class IncrementalCompilationK2JsMultiProject : IncrementalCompilationJsMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
class IncrementalCompilationK1JsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class IncrementalCompilationK2JsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@JvmGradlePluginTests
open class IncrementalCompilationJvmMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
abstract class IncrementalCompilationJvmMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
override val additionalLibDependencies: String =
"implementation \"org.jetbrains.kotlin:kotlin-test:${'$'}kotlin_version\""
@@ -324,12 +328,24 @@ open class IncrementalCompilationJvmMultiProjectIT : BaseIncrementalCompilationM
}
}
class IncrementalCompilationJvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectIT() {
abstract class IncrementalCompilationJvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true)
}
class IncrementalCompilationFirJvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copy(languageVersion = "2.0")
class IncrementalCompilationK1JvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class IncrementalCompilationK2JvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectWithPreciseBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
class IncrementalCompilationK1JvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
class IncrementalCompilationK2JvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
open class IncrementalCompilationOldICJvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
@@ -13,7 +13,7 @@ import kotlin.io.path.*
import kotlin.test.assertTrue
@DisplayName("Default incremental compilation with default precise java tracking")
open class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = null) {
abstract class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = null) {
@DisplayName("Lib: tracked method signature ABI change")
@GradleTest
@@ -91,13 +91,33 @@ open class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBas
}
}
@DisplayName("Default incremental compilation with default precise java tracking on K1")
class IncrementalK1JavaChangeDefaultIT : IncrementalJavaChangeDefaultIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("Default incremental compilation with default precise java tracking on K2")
class IncrementalK2JavaChangeDefaultIT : IncrementalJavaChangeDefaultIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@DisplayName("Default incremental compilation with precise compilation outputs backup")
open class IncrementalJavaChangePreciseCompilationBackupIT : IncrementalJavaChangeDefaultIT() {
abstract class IncrementalJavaChangePreciseCompilationBackupIT : IncrementalJavaChangeDefaultIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true)
}
@DisplayName("Incremental compilation via classpath snapshots with default precise java tracking")
class IncrementalJavaChangeOldICIT : IncrementalJavaChangeDefaultIT() {
@DisplayName("Default incremental compilation with precise compilation outputs backup on K1")
class IncrementalK1JavaChangePreciseCompilationBackupIT : IncrementalJavaChangePreciseCompilationBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("Default incremental compilation with precise compilation outputs backup on K2")
class IncrementalK2JavaChangePreciseCompilationBackupIT : IncrementalJavaChangePreciseCompilationBackupIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@DisplayName("Incremental compilation via history files with default precise java tracking")
abstract class IncrementalJavaChangeOldICIT : IncrementalJavaChangeDefaultIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(useGradleClasspathSnapshot = false)
@@ -153,6 +173,16 @@ class IncrementalJavaChangeOldICIT : IncrementalJavaChangeDefaultIT() {
}
}
@DisplayName("Incremental compilation via history files with default precise java tracking with K1")
class IncrementalK1JavaChangeOldICIT : IncrementalJavaChangeOldICIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("Incremental compilation via history files with default precise java tracking with K2")
class IncrementalK2JavaChangeOldICIT : IncrementalJavaChangeOldICIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@DisplayName("Default incremental compilation with enabled precise java tracking")
class IncrementalJavaChangePreciseIT : IncrementalCompilationJavaChangesBase(
usePreciseJavaTracking = true
@@ -191,7 +221,7 @@ class IncrementalJavaChangePreciseIT : IncrementalCompilationJavaChangesBase(
}
@DisplayName("Default incremental compilation with disabled precise java tracking")
open class IncrementalJavaChangeDisablePreciseIT : IncrementalCompilationJavaChangesBase(
abstract class IncrementalJavaChangeDisablePreciseIT : IncrementalCompilationJavaChangesBase(
usePreciseJavaTracking = false
) {
@DisplayName("Lib: tracked method signature ABI change")
@@ -237,9 +267,14 @@ open class IncrementalJavaChangeDisablePreciseIT : IncrementalCompilationJavaCha
}
}
@DisplayName("Default incremental compilation with disabled precise java tracking and enabled FIR")
class IncrementalFirJavaChangeDisablePreciseIT : IncrementalJavaChangeDisablePreciseIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(languageVersion = "2.0")
@DisplayName("Default incremental compilation with disabled precise java tracking and enabled K1")
class IncrementalK1JavaChangeDisablePreciseIT : IncrementalJavaChangeDisablePreciseIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("Default incremental compilation with disabled precise java tracking and enabled K2")
class IncrementalK2JavaChangeDisablePreciseIT : IncrementalJavaChangeDisablePreciseIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@JvmGradlePluginTests
@@ -18,13 +18,18 @@ import kotlin.test.assertFalse
import kotlin.test.assertNotEquals
import kotlin.test.assertTrue
@DisplayName("Incremental compilation tests for Kotlin JS IR backend with 2.0")
@DisplayName("Incremental compilation tests for Kotlin JS IR backend with K1")
@JsGradlePluginTests
class Kotlin2FirJsIrBeIncrementalCompilationIT : Kotlin2JsIrBeIncrementalCompilationIT() {
class Kotlin2JsK1IrBeIncrementalCompilationIT : Kotlin2JsIrBeIncrementalCompilationIT() {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copy(
languageVersion = "2.0"
)
get() = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("Incremental compilation tests for Kotlin JS IR backend with K2")
@JsGradlePluginTests
class Kotlin2JsK2IrBeIncrementalCompilationIT : Kotlin2JsIrBeIncrementalCompilationIT() {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copyEnsuringK2()
@Disabled("Not found way to fail BE compilation with successful FE 2.0 compilation")
override fun testRebuildAfterError(gradleVersion: GradleVersion) {
@@ -34,7 +39,7 @@ class Kotlin2FirJsIrBeIncrementalCompilationIT : Kotlin2JsIrBeIncrementalCompila
@DisplayName("Incremental compilation tests for Kotlin JS IR backend")
@JsGradlePluginTests
open class Kotlin2JsIrBeIncrementalCompilationIT : KGPBaseTest() {
abstract class Kotlin2JsIrBeIncrementalCompilationIT : KGPBaseTest() {
override val defaultBuildOptions = BuildOptions(
jsOptions = BuildOptions.JsOptions(
incrementalJsKlib = true,
@@ -13,17 +13,14 @@ import org.jetbrains.kotlin.gradle.tasks.USING_JS_IR_BACKEND_MESSAGE
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
@JsGradlePluginTests
open class KotlinJsIr10IncrementalGradlePluginIT : AbstractKotlinJsIncrementalGradlePluginIT(
irBackend = true
)
@JsGradlePluginTests
class KotlinJsFirIncrementalGradlePluginIT : KotlinJsIr10IncrementalGradlePluginIT() {
class KotlinJsIrK1IncrementalGradlePluginIT : AbstractKotlinJsIncrementalGradlePluginIT(irBackend = true) {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copy(
languageVersion = "2.0"
)
get() = super.defaultBuildOptions.copyEnsuringK1()
}
class KotlinJsIrK2IncrementalGradlePluginIT : AbstractKotlinJsIncrementalGradlePluginIT(irBackend = true) {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copyEnsuringK2()
}
@JsGradlePluginTests
@@ -74,12 +74,12 @@ abstract class KotlinJsIrLibraryGradlePluginITBase : KGPBaseTest() {
@DisplayName("Kotlin/JS K1 IR library")
@JsGradlePluginTests
class KotlinK1JsIrLibraryGradlePluginIT : KotlinJsIrLibraryGradlePluginITBase() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(languageVersion = null)
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0)
@DisplayName("Kotlin/JS K2 IR library")
@JsGradlePluginTests
class KotlinK2JsIrLibraryGradlePluginIT : KotlinJsIrLibraryGradlePluginITBase() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(languageVersion = "2.0")
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@@ -21,7 +21,7 @@ import kotlin.io.path.relativeTo
@DisplayName("Scripting plugin")
@OtherGradlePluginTests
@GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_3) // workaround for a Gradle synchronization bug: https://github.com/gradle/gradle/issues/23450
class ScriptingIT : KGPBaseTest() {
abstract class ScriptingIT : KGPBaseTest() {
@DisplayName("basic script is working")
@GradleTest
@@ -110,4 +110,14 @@ class ScriptingIT : KGPBaseTest() {
}
}
}
@DisplayName("K1 Scripting plugin")
class ScriptingK1IT : ScriptingIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1()
}
@DisplayName("K2 Scripting plugin")
class ScriptingK2IT : ScriptingIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK2()
}
@@ -11,6 +11,7 @@ import org.gradle.internal.logging.LoggingConfigurationBuildOptions.StacktraceOp
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.cli.common.CompilerSystemProperties.COMPILE_INCREMENTAL_WITH_ARTIFACT_TRANSFORM
import org.jetbrains.kotlin.gradle.BaseGradleIT
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy
import org.jetbrains.kotlin.gradle.report.BuildReportType
@@ -51,6 +52,15 @@ data class BuildOptions(
val compilerExecutionStrategy: KotlinCompilerExecutionStrategy? = null,
val runViaBuildToolsApi: Boolean? = null,
) {
val isK2ByDefault
get() = KotlinVersion.DEFAULT >= KotlinVersion.KOTLIN_2_0
fun copyEnsuringK1(): BuildOptions =
copy(languageVersion = if (isK2ByDefault) "1.9" else null)
fun copyEnsuringK2(): BuildOptions =
copy(languageVersion = if (isK2ByDefault) null else "2.0")
val safeAndroidVersion: String
get() = androidVersion ?: error("AGP version is expected to be set")