[Gradle] Move external dependencies tests out from Kapt3AndroidIT
#KT-45748 In Progress
This commit is contained in:
committed by
Space Team
parent
90b0c867ed
commit
d980f94fff
+191
@@ -0,0 +1,191 @@
|
||||
/*
|
||||
* Copyright 2010-2022 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.android
|
||||
|
||||
import org.gradle.api.JavaVersion
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.kotlin.gradle.Kapt3BaseIT
|
||||
import org.jetbrains.kotlin.gradle.testbase.*
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import java.io.File
|
||||
|
||||
@DisplayName("android with kapt3 external dependencies tests")
|
||||
@AndroidGradlePluginTests
|
||||
class Kapt3AndroidExternalIT : Kapt3BaseIT() {
|
||||
@DisplayName("kapt works with butterknife")
|
||||
@GradleAndroidTest
|
||||
fun testButterKnife(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-butterknife".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/org/example/kotlin/butterknife/SimpleActivity\$\$ViewBinder.java")
|
||||
|
||||
val butterknifeJavaClassesDir = "app/build/intermediates/javac/debug/classes/org/example/kotlin/butterknife/"
|
||||
assertFileInProjectExists(butterknifeJavaClassesDir + "SimpleActivity\$\$ViewBinder.class")
|
||||
|
||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/debug/org/example/kotlin/butterknife/SimpleAdapter\$ViewHolder.class")
|
||||
}
|
||||
|
||||
build("assembleDebug") {
|
||||
assertTasksUpToDate(":app:compileDebugKotlin", ":app:compileDebugJavaWithJavac")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with dagger")
|
||||
@GradleAndroidTest
|
||||
fun testDagger(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-dagger".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/DaggerApplicationComponent.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/ui/HomeActivity_MembersInjector.java")
|
||||
|
||||
val daggerJavaClassesDir =
|
||||
"app/build/intermediates/javac/debug/classes/com/example/dagger/kotlin/"
|
||||
|
||||
assertFileInProjectExists(daggerJavaClassesDir + "DaggerApplicationComponent.class")
|
||||
|
||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/debug/com/example/dagger/kotlin/AndroidModule.class")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with DbFlow")
|
||||
@GradleAndroidTest
|
||||
fun testDbFlow(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-dbflow".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/GeneratedDatabaseHolder.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/AppDatabaseAppDatabase_Database.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/mobi/porquenao/poc/kotlin/core/Item_Table.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with realm")
|
||||
@GradleAndroidTest
|
||||
fun testRealm(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-realm".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/CatRealmProxy.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/CatRealmProxyInterface.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/DefaultRealmModule.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/DefaultRealmModuleMediator.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with databinding")
|
||||
@GradleAndroidTest
|
||||
fun testDatabinding(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-databinding".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
// TODO: remove the `if` when we drop support for [TestVersions.AGP.AGP_42]
|
||||
buildJdk = if (jdkVersion.version >= JavaVersion.VERSION_11) jdkVersion.location else File(System.getProperty("jdk11Home"))
|
||||
) {
|
||||
build(
|
||||
"assembleDebug", "assembleAndroidTest",
|
||||
) {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java")
|
||||
|
||||
// databinding compiler v2 was introduced in AGP 3.1.0, was enabled by default in AGP 3.2.0
|
||||
assertOutputContains("-Aandroid.databinding.enableV2=1")
|
||||
assertFileInProjectNotExists("library/build/generated/source/kapt/debugAndroidTest/android/databinding/DataBinderMapperImpl.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/databinding/databinding/ActivityTestBindingImpl.java")
|
||||
|
||||
// KT-23866
|
||||
assertOutputDoesNotContain("The following options were not recognized by any processor")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-30735: kapt works with androidx.navigation.safeargs")
|
||||
@GradleAndroidTest
|
||||
fun testAndroidxNavigationSafeArgs(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"androidx-navigation-safe-args".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
val safeArgsVersion = if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_0)) "2.5.3" else "2.1.0"
|
||||
build("assembleDebug", "-Psafe_args_version=$safeArgsVersion") {
|
||||
assertFileInProjectExists("build/generated/source/navigation-args/debug/test/androidx/navigation/StartFragmentDirections.java")
|
||||
assertFileInProjectExists("build/tmp/kotlin-classes/debug/test/androidx/navigation/StartFragmentKt.class")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with androidx")
|
||||
@GradleAndroidTest
|
||||
@AndroidTestVersions(minVersion = TestVersions.AGP.AGP_42, maxVersion = TestVersions.AGP.AGP_42)
|
||||
fun testDatabindingWithAndroidX(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-databinding-androidX".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("kaptDebugKotlin") {
|
||||
assertKaptSuccessful()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-195
@@ -22,63 +22,6 @@ import kotlin.io.path.writeText
|
||||
@DisplayName("android with kapt3 tests")
|
||||
@AndroidGradlePluginTests
|
||||
class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
@DisplayName("kapt works with butterknife")
|
||||
@GradleAndroidTest
|
||||
fun testButterKnife(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-butterknife".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/org/example/kotlin/butterknife/SimpleActivity\$\$ViewBinder.java")
|
||||
|
||||
val butterknifeJavaClassesDir = "app/build/intermediates/javac/debug/classes/org/example/kotlin/butterknife/"
|
||||
assertFileInProjectExists(butterknifeJavaClassesDir + "SimpleActivity\$\$ViewBinder.class")
|
||||
|
||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/debug/org/example/kotlin/butterknife/SimpleAdapter\$ViewHolder.class")
|
||||
}
|
||||
|
||||
build("assembleDebug") {
|
||||
assertTasksUpToDate(":app:compileDebugKotlin", ":app:compileDebugJavaWithJavac")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with dagger")
|
||||
@GradleAndroidTest
|
||||
fun testDagger(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-dagger".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/DaggerApplicationComponent.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/dagger/kotlin/ui/HomeActivity_MembersInjector.java")
|
||||
|
||||
val daggerJavaClassesDir =
|
||||
"app/build/intermediates/javac/debug/classes/com/example/dagger/kotlin/"
|
||||
|
||||
assertFileInProjectExists(daggerJavaClassesDir + "DaggerApplicationComponent.class")
|
||||
|
||||
assertFileInProjectExists("app/build/tmp/kotlin-classes/debug/com/example/dagger/kotlin/AndroidModule.class")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-15001")
|
||||
@GradleAndroidTest
|
||||
fun testKt15001(
|
||||
@@ -98,84 +41,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with DbFlow")
|
||||
@GradleAndroidTest
|
||||
fun testDbFlow(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-dbflow".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/GeneratedDatabaseHolder.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/raizlabs/android/dbflow/config/AppDatabaseAppDatabase_Database.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/mobi/porquenao/poc/kotlin/core/Item_Table.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with realm")
|
||||
@GradleAndroidTest
|
||||
fun testRealm(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-realm".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/CatRealmProxy.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/CatRealmProxyInterface.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/DefaultRealmModule.java")
|
||||
assertFileInProjectExists("build/generated/source/kapt/debug/io/realm/DefaultRealmModuleMediator.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with databinding")
|
||||
@GradleAndroidTest
|
||||
fun testDatabinding(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-databinding".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
// TODO: remove the `if` when we drop support for [TestVersions.AGP.AGP_42]
|
||||
buildJdk = if (jdkVersion.version >= JavaVersion.VERSION_11) jdkVersion.location else File(System.getProperty("jdk11Home"))
|
||||
) {
|
||||
setupDataBinding()
|
||||
|
||||
build(
|
||||
"assembleDebug", "assembleAndroidTest",
|
||||
) {
|
||||
assertKaptSuccessful()
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java")
|
||||
|
||||
// databinding compiler v2 was introduced in AGP 3.1.0, was enabled by default in AGP 3.2.0
|
||||
assertOutputContains("-Aandroid.databinding.enableV2=1")
|
||||
assertFileInProjectNotExists("library/build/generated/source/kapt/debugAndroidTest/android/databinding/DataBinderMapperImpl.java")
|
||||
assertFileInProjectExists("app/build/generated/source/kapt/debug/com/example/databinding/databinding/ActivityTestBindingImpl.java")
|
||||
|
||||
// KT-23866
|
||||
assertOutputDoesNotContain("The following options were not recognized by any processor")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-25374: kapt doesn't fail with anonymous classes with IC")
|
||||
@GradleAndroidTest
|
||||
fun testICWithAnonymousClasses(
|
||||
@@ -189,8 +54,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
setupDataBinding()
|
||||
|
||||
build("assembleDebug") {
|
||||
assertKaptSuccessful()
|
||||
}
|
||||
@@ -261,27 +124,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-30735: kapt works with androidx.navigation.safeargs")
|
||||
@GradleAndroidTest
|
||||
fun testAndroidxNavigationSafeArgs(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"androidx-navigation-safe-args".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
val safeArgsVersion = if (gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_0)) "2.5.3" else "2.1.0"
|
||||
build("assembleDebug", "-Psafe_args_version=$safeArgsVersion") {
|
||||
assertFileInProjectExists("build/generated/source/navigation-args/debug/test/androidx/navigation/StartFragmentDirections.java")
|
||||
assertFileInProjectExists("build/tmp/kotlin-classes/debug/test/androidx/navigation/StartFragmentKt.class")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-31127: kapt doesn't break JavaCompile when using Filer API")
|
||||
@GradleAndroidTest
|
||||
fun testKotlinProcessorUsingFiler(
|
||||
@@ -328,26 +170,6 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt works with androidx")
|
||||
@GradleAndroidTest
|
||||
@AndroidTestVersions(minVersion = AGP_42, maxVersion = AGP_42)
|
||||
fun testDatabindingWithAndroidX(
|
||||
gradleVersion: GradleVersion,
|
||||
agpVersion: String,
|
||||
jdkVersion: JdkVersions.ProvidedJdk,
|
||||
) {
|
||||
project(
|
||||
"android-databinding-androidX".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion),
|
||||
buildJdk = jdkVersion.location
|
||||
) {
|
||||
build("kaptDebugKotlin") {
|
||||
assertKaptSuccessful()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("kapt uses AGP annotation processor option providers as nested inputs")
|
||||
@GradleAndroidTest
|
||||
fun testKaptUsingApOptionProvidersAsNestedInputOutput(
|
||||
@@ -467,21 +289,4 @@ class Kapt3AndroidIT : Kapt3BaseIT() {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun TestProject.setupDataBinding() {
|
||||
buildGradle.appendText(
|
||||
//language=Gradle
|
||||
"""
|
||||
|
||||
allprojects {
|
||||
plugins.withId("kotlin-kapt") {
|
||||
println("${'$'}project android.databinding.enableV2=${'$'}{project.findProperty('android.databinding.enableV2')}")
|
||||
|
||||
// With new AGP, there's no need in the Databinding kapt dependency:
|
||||
configurations.kapt.exclude group: "com.android.databinding", module: "compiler"
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
}
|
||||
-1
@@ -47,5 +47,4 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
kapt "com.android.databinding:compiler:$android_tools_version"
|
||||
}
|
||||
Reference in New Issue
Block a user