[Gradle] Add Gradle integration tests with precise compilation outputs backup

#KT-49785 In Progress
This commit is contained in:
Alexander Likhachev
2022-12-13 04:37:17 +01:00
committed by Space Team
parent 40a901caa1
commit db5df5c5ec
9 changed files with 58 additions and 10 deletions
@@ -14,7 +14,7 @@ import kotlin.io.path.exists
@DisplayName("Compiler plugin incremental compilation")
@OtherGradlePluginTests
class CompilerPluginsIncrementalIT : KGPBaseTest() {
open class CompilerPluginsIncrementalIT : KGPBaseTest() {
override val defaultBuildOptions: BuildOptions
get() = super.defaultBuildOptions.copy(
incremental = true
@@ -68,3 +68,8 @@ class CompilerPluginsIncrementalIT : KGPBaseTest() {
private val String.prefix get() = "compilerPlugins/$this"
}
@DisplayName("Compiler plugin incremental compilation with precise compilation outputs backup")
class CompilerPluginsIncrementalWithPreciseBackupIT : CompilerPluginsIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@@ -12,7 +12,7 @@ import java.nio.file.Path
import kotlin.io.path.*
@JsGradlePluginTests
class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
open class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
override val defaultProjectName: String = "incrementalMultiproject"
override fun defaultProject(
@@ -136,6 +136,10 @@ class IncrementalCompilationJsMultiProjectIT : BaseIncrementalCompilationMultiPr
}
}
class IncrementalCompilationJsMultiProjectWithPreciseBackupIT : IncrementalCompilationJsMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@JvmGradlePluginTests
open class IncrementalCompilationJvmMultiProjectIT : BaseIncrementalCompilationMultiProjectIT() {
override val additionalLibDependencies: String =
@@ -275,11 +279,15 @@ open class IncrementalCompilationJvmMultiProjectIT : BaseIncrementalCompilationM
}
}
class IncrementalCompilationJvmMultiProjectWithPreciseBackupIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
class IncrementalCompilationFirJvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions: BuildOptions = super.defaultBuildOptions.copy(useFir = true)
}
class IncrementalCompilationOldICJvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
open class IncrementalCompilationOldICJvmMultiProjectIT : IncrementalCompilationJvmMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(useGradleClasspathSnapshot = false)
@@ -412,6 +420,10 @@ class IncrementalCompilationOldICJvmMultiProjectIT : IncrementalCompilationJvmMu
}
}
class IncrementalCompilationOldICJvmMultiProjectWithPreciseBackupIT : IncrementalCompilationOldICJvmMultiProjectIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
abstract class BaseIncrementalCompilationMultiProjectIT : IncrementalCompilationBaseIT() {
protected abstract val compileKotlinTaskName: String
@@ -91,6 +91,11 @@ open class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBas
}
}
@DisplayName("Default incremental compilation with precise compilation outputs backup")
open class IncrementalJavaChangePreciseCompilationBackupIT : IncrementalJavaChangeDefaultIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@DisplayName("Incremental compilation via classpath snapshots with default precise java tracking")
class IncrementalJavaChangeOldICIT : IncrementalJavaChangeDefaultIT() {
@@ -388,3 +388,8 @@ open class KaptIncrementalIT : KGPBaseTest() {
val TestProject.kaptGeneratedToPath get() = projectPath.resolve("build/generated/source/kapt")
}
@DisplayName("Kapt incremental compilation with precise compilation outputs backup")
class KaptIncrementalWithPreciseBackupIT : KaptIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@@ -21,7 +21,7 @@ import kotlin.test.assertEquals
import kotlin.test.assertTrue
@DisplayName("Kapt incremental tests with aggregating apt")
class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() {
open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(
incremental = true,
@@ -389,3 +389,8 @@ class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() {
}
}
}
@DisplayName("Kapt incremental tests with aggregating apt with precise compilation outputs backup")
class KaptIncrementalWithAggregatingAptAndPreciseBackup : KaptIncrementalWithAggregatingApt() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@@ -24,7 +24,7 @@ import kotlin.io.path.*
import kotlin.test.assertEquals
@DisplayName("Kapt incremental tests with isolating apt")
class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() {
open class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(
incremental = true,
@@ -429,6 +429,11 @@ class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() {
}
}
@DisplayName("Kapt incremental tests with isolating apt with precise compilation outputs backup")
class KaptIncrementalWithIsolatingAptAndPreciseBackup : KaptIncrementalWithIsolatingApt() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
private const val patternApt = "Processing java sources with annotation processors:"
fun getProcessedSources(output: String): Set<String> {
return output.lines().filter { it.contains(patternApt) }.flatMapTo(HashSet()) { logging ->
@@ -18,7 +18,7 @@ import kotlin.io.path.writeText
@DisplayName("android with kapt3 incremental build tests")
@AndroidGradlePluginTests
class Kapt3AndroidIncrementalIT : Kapt3BaseIT() {
open class Kapt3AndroidIncrementalIT : Kapt3BaseIT() {
@DisplayName("stubs generation is incremental on changes in android variant java sources")
@GradleAndroidTest
fun generateStubsTaskShouldRunIncrementallyOnChangesInAndroidVariantJavaSources(
@@ -202,4 +202,9 @@ class Kapt3AndroidIncrementalIT : Kapt3BaseIT() {
modifyAndCheck(libJvmProject.kotlinSourcesDir().resolve("libJvmUtil.kt"), "useLibJvmUtil.kt")
}
}
}
@DisplayName("android with kapt3 incremental build tests with precise compilation outputs backup")
class Kapt3AndroidIncrementalWithPreciseBackupIT : Kapt3AndroidIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@@ -8,16 +8,13 @@ package org.jetbrains.kotlin.gradle.android
import org.gradle.api.logging.LogLevel
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.getFileByName
import org.jetbrains.kotlin.gradle.util.getFilesByNames
import org.jetbrains.kotlin.gradle.util.modify
import org.junit.jupiter.api.DisplayName
import kotlin.io.path.appendText
import kotlin.io.path.writeText
@DisplayName("kotlin-android incremental compilation tests")
@AndroidGradlePluginTests
class KotlinAndroidIncrementalIT : KGPBaseTest() {
open class KotlinAndroidIncrementalIT : KGPBaseTest() {
@DisplayName("incremental compilation works with single-module android projects")
@GradleAndroidTest
fun testIncrementalCompilation(
@@ -180,4 +177,8 @@ class KotlinAndroidIncrementalIT : KGPBaseTest() {
}
}
}
}
class KotlinAndroidIncrementalWithPreciseBackupIT : KotlinAndroidIncrementalIT() {
override val defaultBuildOptions = super.defaultBuildOptions.copy(usePreciseOutputsBackup = true)
}
@@ -38,6 +38,7 @@ data class BuildOptions(
val usePreciseJavaTracking: Boolean? = null,
val freeArgs: List<String> = emptyList(),
val statisticsForceValidation: Boolean = true,
val usePreciseOutputsBackup: Boolean? = null,
) {
data class KaptOptions(
val verbose: Boolean = false,
@@ -144,6 +145,10 @@ data class BuildOptions(
arguments.add("-Pkotlin_performance_profile_force_validation=true")
}
if (usePreciseOutputsBackup != null) {
arguments.add("-Pkotlin.compiler.preciseCompilationResultsBackup=$usePreciseOutputsBackup")
}
arguments.addAll(freeArgs)
return arguments.toList()