Extract BuildOptions into separate file.
^KT-45745 In Progress
This commit is contained in:
+99
@@ -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()
|
||||
}
|
||||
}
|
||||
-91
@@ -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
|
||||
|
||||
+5
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user