diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt index 800b91573dc..0aee700ce3e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt @@ -338,6 +338,22 @@ abstract class IncrementalCompilationJvmMultiProjectWithPreciseBackupIT : Increm override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true) } +class IncrementalCompilationK2JvmMultiProjectBuildToolsApiDaemonIT : IncrementalCompilationJvmMultiProjectWithPreciseBackupIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.DAEMON) + + @Disabled("Doesn't make sense since Build Tools API supports incremental compilation for the in-process mode") + override fun testMissingIncrementalState(gradleVersion: GradleVersion) { + } +} + +class IncrementalCompilationK2JvmMultiProjectBuildToolsApiInProcessIT : IncrementalCompilationJvmMultiProjectWithPreciseBackupIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.IN_PROCESS) + + @Disabled("Doesn't make sense since Build Tools API supports incremental compilation for the in-process mode") + override fun testMissingIncrementalState(gradleVersion: GradleVersion) { + } +} + class IncrementalCompilationK1JvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectWithPreciseBackupIT() { override val defaultBuildOptions = super.defaultBuildOptions.copyEnsuringK1() } @@ -897,7 +913,7 @@ abstract class BaseIncrementalCompilationMultiProjectIT : IncrementalCompilation @DisplayName("Test compilation when incremental state is missing") @GradleTest - fun testMissingIncrementalState(gradleVersion: GradleVersion) { + open fun testMissingIncrementalState(gradleVersion: GradleVersion) { defaultProject(gradleVersion) { // Perform the first non-incremental build without using Kotlin daemon so that incremental state is not produced build( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt index 04dd9a556d5..75584295650 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName @@ -122,6 +123,56 @@ class IncrementalK2JavaChangeDefaultIT : IncrementalJavaChangeDefaultIT() { } } +@DisplayName("Default incremental compilation via Build Tools API") +class IncrementalK2JavaChangeBuildToolsApiDaemonIT : IncrementalJavaChangeDefaultIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.DAEMON) + + @Disabled("KT-57147") + override fun testAbiChangeInLib_changeMethodSignature_tracked(gradleVersion: GradleVersion) { + super.testAbiChangeInLib_changeMethodSignature_tracked(gradleVersion) + } + + @Disabled("KT-57147") + override fun testNonAbiChangeInLib_changeMethodBody_tracked(gradleVersion: GradleVersion) { + super.testNonAbiChangeInLib_changeMethodBody_tracked(gradleVersion) + } + + @Disabled("KT-57147") + override fun testAbiChangeInLib_changeMethodSignature(gradleVersion: GradleVersion) { + super.testAbiChangeInLib_changeMethodSignature(gradleVersion) + } + + @Disabled("KT-57147") + override fun testNonAbiChangeInLib_changeMethodBody(gradleVersion: GradleVersion) { + super.testNonAbiChangeInLib_changeMethodBody(gradleVersion) + } +} + +@DisplayName("Incremental compilation via Build Tools API using in-process strategy") +class IncrementalK2JavaChangeBuildToolsApiInProcessIT : IncrementalJavaChangeDefaultIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.IN_PROCESS) + + @Disabled("KT-57147") + override fun testAbiChangeInLib_changeMethodSignature_tracked(gradleVersion: GradleVersion) { + super.testAbiChangeInLib_changeMethodSignature_tracked(gradleVersion) + } + + @Disabled("KT-57147") + override fun testNonAbiChangeInLib_changeMethodBody_tracked(gradleVersion: GradleVersion) { + super.testNonAbiChangeInLib_changeMethodBody_tracked(gradleVersion) + } + + @Disabled("KT-57147") + override fun testAbiChangeInLib_changeMethodSignature(gradleVersion: GradleVersion) { + super.testAbiChangeInLib_changeMethodSignature(gradleVersion) + } + + @Disabled("KT-57147") + override fun testNonAbiChangeInLib_changeMethodBody(gradleVersion: GradleVersion) { + super.testNonAbiChangeInLib_changeMethodBody(gradleVersion) + } +} + @DisplayName("Default incremental compilation with precise compilation outputs backup") abstract class IncrementalJavaChangePreciseCompilationBackupIT : IncrementalJavaChangeDefaultIT() { override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIncrementalIT.kt index c83235bfcc1..a319ba4e859 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidIncrementalIT.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.android import org.gradle.api.logging.LogLevel import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.DisplayName import kotlin.io.path.appendText @@ -181,4 +182,12 @@ open class KotlinAndroidIncrementalIT : KGPBaseTest() { class KotlinAndroidIncrementalWithPreciseBackupIT : KotlinAndroidIncrementalIT() { override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true, keepIncrementalCompilationCachesInMemory = true) +} + +class KotlinAndroidIncrementalBuildToolsApiDaemonIT : KotlinAndroidIncrementalIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.DAEMON) +} + +class KotlinAndroidIncrementalBuildToolsApiInProcessIT : KotlinAndroidIncrementalIT() { + override val defaultBuildOptions = super.defaultBuildOptions.copy(runViaBuildToolsApi = true, compilerExecutionStrategy = KotlinCompilerExecutionStrategy.IN_PROCESS) } \ No newline at end of file