From 3b18debee35c5b44e7b97500f30c9b8c0b81b6cc Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 29 Jun 2018 01:05:49 +0300 Subject: [PATCH] Test kapt with workers --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 12 +++++- .../jetbrains/kotlin/gradle/Kapt3AndroidIT.kt | 38 ++++++++----------- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 10 ++++- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index d22dcfe856e..25d5797cece 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -158,7 +158,7 @@ abstract class BaseGradleIT { } // the second parameter is for using with ToolingAPI, that do not like --daemon/--no-daemon options at all - data class BuildOptions( + data class BuildOptions constructor( val withDaemon: Boolean = false, val daemonOptionSupported: Boolean = true, val incremental: Boolean? = null, @@ -171,9 +171,12 @@ abstract class BaseGradleIT { val kotlinVersion: String = KOTLIN_VERSION, val kotlinDaemonDebugPort: Int? = null, val usePreciseJavaTracking: Boolean? = null, - val withBuildCache: Boolean = false + val withBuildCache: Boolean = false, + val kaptOptions: KaptOptions? = null ) + data class KaptOptions(val verbose: Boolean, val useWorkers: Boolean) + open inner class Project( val projectName: String, val gradleVersionRequirement: GradleVersionRequired = GradleVersionRequired.None, @@ -525,6 +528,11 @@ abstract class BaseGradleIT { add("-Dorg.gradle.caching=false") } + options.kaptOptions?.also { kaptOptions -> + add("-Pkapt.verbose=${kaptOptions.verbose}") + add("-Pkapt.use.worker.api=${kaptOptions.useWorkers}") + } + // Workaround: override a console type set in the user machine gradle.properties (since Gradle 4.3): add("--console=plain") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt index 316c618deb1..5e7fbc7272b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt @@ -4,9 +4,13 @@ import org.jetbrains.kotlin.gradle.util.isLegacyAndroidGradleVersion import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Test -import java.io.File -class Kapt3Android32IT : Kapt3AndroidIT() { +class Kapt3WorkersAndroid32IT : Kapt3Android32IT() { + override fun kaptOptions(): KaptOptions = + super.kaptOptions().copy(useWorkers = true) +} + +open class Kapt3Android32IT : Kapt3AndroidIT() { override val androidGradlePluginVersion: String get() = "3.2.0-beta01" @@ -21,22 +25,17 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { protected open val gradleVersion: GradleVersionRequired get() = GradleVersionRequired.AtLeast("4.1") - private fun androidBuildOptions() = - BuildOptions( - withDaemon = true, + override fun defaultBuildOptions() = + super.defaultBuildOptions().copy( androidHome = KotlinTestUtils.findAndroidSdk(), - androidGradlePluginVersion = androidGradlePluginVersion, - freeCommandLineArgs = listOf("-Pkapt.verbose=true") + androidGradlePluginVersion = androidGradlePluginVersion ) - override fun defaultBuildOptions() = androidBuildOptions() - @Test fun testButterKnife() { val project = Project("android-butterknife", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() assertFileExists("app/build/generated/source/kapt/debug/org/example/kotlin/butterknife/SimpleActivity\$\$ViewBinder.java") @@ -57,7 +56,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { } } - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertTasksUpToDate(":compileDebugKotlin", ":compileDebugJavaWithJavac") } @@ -66,9 +65,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { @Test fun testDagger() { val project = Project("android-dagger", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() assertFileExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/DaggerApplicationComponent.java") @@ -93,9 +91,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { @Test fun testKt15001() { val project = Project("kt15001", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() } @@ -104,9 +101,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { @Test fun testDbFlow() { val project = Project("android-dbflow", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() assertFileExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/GeneratedDatabaseHolder.java") @@ -119,9 +115,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { @Test fun testRealm() { val project = Project("android-realm", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() assertFileExists("build/generated/source/kapt/debug/io/realm/CatRealmProxy.java") @@ -134,7 +129,6 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { @Test open fun testDatabinding() { val project = Project("android-databinding", gradleVersion, directoryPrefix = "kapt2") - val options = androidBuildOptions() if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) { project.setupWorkingDir() @@ -156,7 +150,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { ) } - project.build("assembleDebug", options = options) { + project.build("assembleDebug") { assertSuccessful() assertKaptSuccessful() assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 50d66100831..00688bdb4a4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -29,13 +29,21 @@ abstract class Kapt3BaseIT : BaseGradleIT() { } override fun defaultBuildOptions(): BuildOptions = - super.defaultBuildOptions().copy(withDaemon = true) + super.defaultBuildOptions().copy(kaptOptions = kaptOptions()) + + protected open fun kaptOptions(): KaptOptions = + KaptOptions(verbose = true, useWorkers = false) fun CompiledProject.assertKaptSuccessful() { KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0 } } +class Kapt3WorkersIT : Kapt3IT() { + override fun kaptOptions(): KaptOptions = + super.kaptOptions().copy(useWorkers = true) +} + open class Kapt3IT : Kapt3BaseIT() { @Test fun testAnnotationProcessorAsFqName() {