Test kapt with workers

This commit is contained in:
Alexey Tsvetkov
2018-06-29 01:05:49 +03:00
parent efeea9d7d4
commit 3b18debee3
3 changed files with 35 additions and 25 deletions
@@ -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 // 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 withDaemon: Boolean = false,
val daemonOptionSupported: Boolean = true, val daemonOptionSupported: Boolean = true,
val incremental: Boolean? = null, val incremental: Boolean? = null,
@@ -171,9 +171,12 @@ abstract class BaseGradleIT {
val kotlinVersion: String = KOTLIN_VERSION, val kotlinVersion: String = KOTLIN_VERSION,
val kotlinDaemonDebugPort: Int? = null, val kotlinDaemonDebugPort: Int? = null,
val usePreciseJavaTracking: Boolean? = 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( open inner class Project(
val projectName: String, val projectName: String,
val gradleVersionRequirement: GradleVersionRequired = GradleVersionRequired.None, val gradleVersionRequirement: GradleVersionRequired = GradleVersionRequired.None,
@@ -525,6 +528,11 @@ abstract class BaseGradleIT {
add("-Dorg.gradle.caching=false") 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): // Workaround: override a console type set in the user machine gradle.properties (since Gradle 4.3):
add("--console=plain") add("--console=plain")
@@ -4,9 +4,13 @@ import org.jetbrains.kotlin.gradle.util.isLegacyAndroidGradleVersion
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.modify
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Test 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 override val androidGradlePluginVersion: String
get() = "3.2.0-beta01" get() = "3.2.0-beta01"
@@ -21,22 +25,17 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
protected open val gradleVersion: GradleVersionRequired protected open val gradleVersion: GradleVersionRequired
get() = GradleVersionRequired.AtLeast("4.1") get() = GradleVersionRequired.AtLeast("4.1")
private fun androidBuildOptions() = override fun defaultBuildOptions() =
BuildOptions( super.defaultBuildOptions().copy(
withDaemon = true,
androidHome = KotlinTestUtils.findAndroidSdk(), androidHome = KotlinTestUtils.findAndroidSdk(),
androidGradlePluginVersion = androidGradlePluginVersion, androidGradlePluginVersion = androidGradlePluginVersion
freeCommandLineArgs = listOf("-Pkapt.verbose=true")
) )
override fun defaultBuildOptions() = androidBuildOptions()
@Test @Test
fun testButterKnife() { fun testButterKnife() {
val project = Project("android-butterknife", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-butterknife", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/org/example/kotlin/butterknife/SimpleActivity\$\$ViewBinder.java") 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() assertSuccessful()
assertTasksUpToDate(":compileDebugKotlin", ":compileDebugJavaWithJavac") assertTasksUpToDate(":compileDebugKotlin", ":compileDebugJavaWithJavac")
} }
@@ -66,9 +65,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testDagger() { fun testDagger() {
val project = Project("android-dagger", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-dagger", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/DaggerApplicationComponent.java") assertFileExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/DaggerApplicationComponent.java")
@@ -93,9 +91,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testKt15001() { fun testKt15001() {
val project = Project("kt15001", gradleVersion, directoryPrefix = "kapt2") val project = Project("kt15001", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
} }
@@ -104,9 +101,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testDbFlow() { fun testDbFlow() {
val project = Project("android-dbflow", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-dbflow", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/GeneratedDatabaseHolder.java") assertFileExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/GeneratedDatabaseHolder.java")
@@ -119,9 +115,8 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
fun testRealm() { fun testRealm() {
val project = Project("android-realm", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-realm", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
assertFileExists("build/generated/source/kapt/debug/io/realm/CatRealmProxy.java") assertFileExists("build/generated/source/kapt/debug/io/realm/CatRealmProxy.java")
@@ -134,7 +129,6 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
@Test @Test
open fun testDatabinding() { open fun testDatabinding() {
val project = Project("android-databinding", gradleVersion, directoryPrefix = "kapt2") val project = Project("android-databinding", gradleVersion, directoryPrefix = "kapt2")
val options = androidBuildOptions()
if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) { if (!isLegacyAndroidGradleVersion(androidGradlePluginVersion)) {
project.setupWorkingDir() project.setupWorkingDir()
@@ -156,7 +150,7 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
) )
} }
project.build("assembleDebug", options = options) { project.build("assembleDebug") {
assertSuccessful() assertSuccessful()
assertKaptSuccessful() assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java") assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java")
@@ -29,13 +29,21 @@ abstract class Kapt3BaseIT : BaseGradleIT() {
} }
override fun defaultBuildOptions(): BuildOptions = 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() { fun CompiledProject.assertKaptSuccessful() {
KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0 KAPT_SUCCESSFUL_REGEX.findAll(this.output).count() > 0
} }
} }
class Kapt3WorkersIT : Kapt3IT() {
override fun kaptOptions(): KaptOptions =
super.kaptOptions().copy(useWorkers = true)
}
open class Kapt3IT : Kapt3BaseIT() { open class Kapt3IT : Kapt3BaseIT() {
@Test @Test
fun testAnnotationProcessorAsFqName() { fun testAnnotationProcessorAsFqName() {