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
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")
@@ -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")
@@ -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() {