Extract BuildOptions into separate file.

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2021-10-07 14:54:57 +02:00
parent fc00d0dc18
commit 5d2739e6f0
3 changed files with 104 additions and 96 deletions
@@ -0,0 +1,99 @@
/*
* Copyright 2010-2021 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.testbase
import org.gradle.api.logging.LogLevel
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.BaseGradleIT
data class BuildOptions(
val logLevel: LogLevel = LogLevel.INFO,
val kotlinVersion: String = TestVersions.Kotlin.CURRENT,
val warningMode: WarningMode = WarningMode.Fail,
val configurationCache: Boolean = false,
val projectIsolation: Boolean = false,
val configurationCacheProblems: BaseGradleIT.ConfigurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL,
val parallel: Boolean = true,
val incremental: Boolean? = null,
val maxWorkers: Int = (Runtime.getRuntime().availableProcessors() / 4 - 1).coerceAtLeast(2),
val fileSystemWatchEnabled: Boolean = false,
val buildCacheEnabled: Boolean = false,
val kaptOptions: KaptOptions? = null,
val androidVersion: String? = null
) {
data class KaptOptions(
val verbose: Boolean = false,
val useWorkers: Boolean = false,
val incrementalKapt: Boolean = false,
val includeCompileClasspath: Boolean = false,
val classLoadersCacheSize: Int? = null
)
fun toArguments(
gradleVersion: GradleVersion
): List<String> {
val arguments = mutableListOf<String>()
when (logLevel) {
LogLevel.DEBUG -> arguments.add("--debug")
LogLevel.INFO -> arguments.add("--info")
LogLevel.WARN -> arguments.add("--warn")
LogLevel.QUIET -> arguments.add("--quiet")
else -> Unit
}
arguments.add("-Pkotlin_version=$kotlinVersion")
when (warningMode) {
WarningMode.Fail -> arguments.add("--warning-mode=fail")
WarningMode.All -> arguments.add("--warning-mode=all")
WarningMode.Summary -> arguments.add("--warning-mode=summary")
WarningMode.None -> arguments.add("--warning-mode=none")
}
if (gradleVersion >= GradleVersion.version("6.6.0")) {
arguments.add("-Dorg.gradle.unsafe.configuration-cache=$configurationCache")
arguments.add("-Dorg.gradle.unsafe.configuration-cache-problems=${configurationCacheProblems.name.toLowerCase()}")
}
if (gradleVersion >= GradleVersion.version("7.1")) {
arguments.add("-Dorg.gradle.unsafe.isolated-projects=$projectIsolation")
}
if (parallel) {
arguments.add("--parallel")
arguments.add("--max-workers=$maxWorkers")
} else {
arguments.add("--no-parallel")
}
if (incremental != null) {
arguments.add("-Pkotlin.incremental=$incremental")
}
if (gradleVersion >= GradleVersion.version("6.5")) {
if (fileSystemWatchEnabled) {
arguments.add("--watch-fs")
} else {
arguments.add("--no-watch-fs")
}
}
arguments.add(if (buildCacheEnabled) "--build-cache" else "--no-build-cache")
if (kaptOptions != null) {
arguments.add("-Pkapt.verbose=${kaptOptions.verbose}")
arguments.add("-Pkapt.use.worker.api=${kaptOptions.useWorkers}")
arguments.add("-Pkapt.incremental.apt=${kaptOptions.incrementalKapt}")
arguments.add("-Pkapt.include.compile.classpath=${kaptOptions.includeCompileClasspath}")
kaptOptions.classLoadersCacheSize?.let { cacheSize ->
arguments.add("-Pkapt.classloaders.cache.size=$cacheSize")
}
}
if (androidVersion != null) {
arguments.add("-Pandroid_tools_version=${androidVersion}")
}
return arguments.toList()
}
}
@@ -5,11 +5,8 @@
package org.jetbrains.kotlin.gradle.testbase
import org.gradle.api.logging.LogLevel
import org.gradle.api.logging.configuration.WarningMode
import org.gradle.internal.impldep.org.junit.platform.commons.support.AnnotationSupport.findAnnotation
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.BaseGradleIT
import org.jetbrains.kotlin.test.WithMuteInDatabase
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.TestInstance
@@ -33,94 +30,6 @@ abstract class KGPBaseTest {
@TempDir
lateinit var workingDir: Path
data class BuildOptions(
val logLevel: LogLevel = LogLevel.INFO,
val kotlinVersion: String = TestVersions.Kotlin.CURRENT,
val warningMode: WarningMode = WarningMode.Fail,
val configurationCache: Boolean = false,
val projectIsolation: Boolean = false,
val configurationCacheProblems: BaseGradleIT.ConfigurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL,
val parallel: Boolean = true,
val incremental: Boolean? = null,
val maxWorkers: Int = (Runtime.getRuntime().availableProcessors() / 4 - 1).coerceAtLeast(2),
val fileSystemWatchEnabled: Boolean = false,
val buildCacheEnabled: Boolean = false,
val kaptOptions: KaptOptions? = null,
val androidVersion: String? = null
) {
data class KaptOptions(
val verbose: Boolean = false,
val useWorkers: Boolean = false,
val incrementalKapt: Boolean = false,
val includeCompileClasspath: Boolean = false,
val classLoadersCacheSize: Int? = null
)
fun toArguments(
gradleVersion: GradleVersion
): List<String> {
val arguments = mutableListOf<String>()
when (logLevel) {
LogLevel.DEBUG -> arguments.add("--debug")
LogLevel.INFO -> arguments.add("--info")
LogLevel.WARN -> arguments.add("--warn")
LogLevel.QUIET -> arguments.add("--quiet")
else -> Unit
}
arguments.add("-Pkotlin_version=$kotlinVersion")
when (warningMode) {
WarningMode.Fail -> arguments.add("--warning-mode=fail")
WarningMode.All -> arguments.add("--warning-mode=all")
WarningMode.Summary -> arguments.add("--warning-mode=summary")
WarningMode.None -> arguments.add("--warning-mode=none")
}
if (gradleVersion >= GradleVersion.version("6.6.0")) {
arguments.add("-Dorg.gradle.unsafe.configuration-cache=$configurationCache")
arguments.add("-Dorg.gradle.unsafe.configuration-cache-problems=${configurationCacheProblems.name.toLowerCase()}")
}
if (gradleVersion >= GradleVersion.version("7.1")) {
arguments.add("-Dorg.gradle.unsafe.isolated-projects=$projectIsolation")
}
if (parallel) {
arguments.add("--parallel")
arguments.add("--max-workers=$maxWorkers")
} else {
arguments.add("--no-parallel")
}
if (incremental != null) {
arguments.add("-Pkotlin.incremental=$incremental")
}
if (gradleVersion >= GradleVersion.version("6.5")) {
if (fileSystemWatchEnabled) {
arguments.add("--watch-fs")
} else {
arguments.add("--no-watch-fs")
}
}
arguments.add(if (buildCacheEnabled) "--build-cache" else "--no-build-cache")
if (kaptOptions != null) {
arguments.add("-Pkapt.verbose=${kaptOptions.verbose}")
arguments.add("-Pkapt.use.worker.api=${kaptOptions.useWorkers}")
arguments.add("-Pkapt.incremental.apt=${kaptOptions.incrementalKapt}")
arguments.add("-Pkapt.include.compile.classpath=${kaptOptions.includeCompileClasspath}")
kaptOptions.classLoadersCacheSize?.let { cacheSize ->
arguments.add("-Pkapt.classloaders.cache.size=$cacheSize")
}
}
if (androidVersion != null) {
arguments.add("-Pandroid_tools_version=${androidVersion}")
}
return arguments.toList()
}
}
class GradleArgumentsProvider : ArgumentsProvider {
override fun provideArguments(
context: ExtensionContext
@@ -28,7 +28,7 @@ import kotlin.test.assertTrue
fun KGPBaseTest.project(
projectName: String,
gradleVersion: GradleVersion,
buildOptions: KGPBaseTest.BuildOptions = defaultBuildOptions,
buildOptions: BuildOptions = defaultBuildOptions,
forceOutput: Boolean = false,
enableBuildScan: Boolean = false,
addHeapDumpOptions: Boolean = true,
@@ -80,7 +80,7 @@ fun TestProject.build(
enableGradleDebug: Boolean = this.enableGradleDebug,
enableBuildCacheDebug: Boolean = false,
enableBuildScan: Boolean = this.enableBuildScan,
buildOptions: KGPBaseTest.BuildOptions = this.buildOptions,
buildOptions: BuildOptions = this.buildOptions,
assertions: BuildResult.() -> Unit = {}
) {
if (enableBuildScan) agreeToBuildScanService()
@@ -112,7 +112,7 @@ fun TestProject.buildAndFail(
enableGradleDebug: Boolean = this.enableGradleDebug,
enableBuildCacheDebug: Boolean = false,
enableBuildScan: Boolean = this.enableBuildScan,
buildOptions: KGPBaseTest.BuildOptions = this.buildOptions,
buildOptions: BuildOptions = this.buildOptions,
assertions: BuildResult.() -> Unit = {}
) {
if (enableBuildScan) agreeToBuildScanService()
@@ -183,7 +183,7 @@ class TestProject(
val gradleRunner: GradleRunner,
projectName: String,
projectPath: Path,
val buildOptions: KGPBaseTest.BuildOptions,
val buildOptions: BuildOptions,
val gradleVersion: GradleVersion,
val enableGradleDebug: Boolean,
val forceOutput: Boolean,
@@ -194,7 +194,7 @@ class TestProject(
private fun commonBuildSetup(
buildArguments: List<String>,
buildOptions: KGPBaseTest.BuildOptions,
buildOptions: BuildOptions,
enableBuildCacheDebug: Boolean,
enableBuildScan: Boolean,
gradleVersion: GradleVersion