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 682f0f3a1e1..f836e7ff630 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 @@ -154,10 +154,11 @@ open class Kapt3AndroidIT : Kapt3BaseIT() { val project = Project("android-databinding", directoryPrefix = "kapt2") setupDataBinding(project, "app") - project.build("assembleDebug") { + project.build("assembleDebug", "assembleAndroidTest") { assertSuccessful() assertKaptSuccessful() assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java") + assertFileExists("library/build/generated/source/kapt/debugAndroidTest/android/databinding/DataBinderMapperImpl.java") if (isLegacyAndroidGradleVersion(androidGradlePluginVersion)) { assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/databinding/ActivityTestBinding.java") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle index 38b16facd3c..8c918b3bc8c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle @@ -11,6 +11,7 @@ android { targetSdkVersion 24 versionCode 1 versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -30,7 +31,8 @@ repositories { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - kapt "com.android.databinding:compiler:$android_tools_version" + //kapt "com.android.databinding:compiler:$android_tools_version" + kaptAndroidTest "junit:junit:4.12" compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml new file mode 100644 index 00000000000..5ee04095487 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt new file mode 100644 index 00000000000..5b8b8f33c7c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt @@ -0,0 +1,5 @@ +package com.example.databinding.test + +import android.app.Activity + +class BlankActivity : Activity() {} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle new file mode 100644 index 00000000000..a893867b0d9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle @@ -0,0 +1,39 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 27 + buildToolsVersion "27.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 27 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + } + } + + dataBinding { enabled = true } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + testImplementation 'junit:junit:4.12' + + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation "com.android.support.test:rules:1.0.2" + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2' +} + +repositories { + mavenCentral() +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml new file mode 100644 index 00000000000..663d4d59ec7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt new file mode 100644 index 00000000000..c1b07bebf1a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt @@ -0,0 +1,6 @@ +package org.maw.library + +import android.support.v7.app.AppCompatActivity + +class BlankActivity : AppCompatActivity() { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt new file mode 100644 index 00000000000..e757840c8b9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt @@ -0,0 +1,33 @@ +package org.maw.library + +import android.support.test.annotation.UiThreadTest +import android.support.test.rule.ActivityTestRule +import android.support.test.runner.AndroidJUnit4 +import android.view.ViewGroup +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +/** + * Instrumented test, which will execute on an Android device. + * + * @see [Testing documentation](http://d.android.com/tools/testing) + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + + @get:Rule + var activityTestRule = ActivityTestRule(BlankActivity::class.java) + + + @UiThreadTest + @Test + fun createAndAddView() { + + val container = activityTestRule.activity.findViewById(android.R.id.content) + val testView = TestView(activityTestRule.activity) + + container.addView(testView) + + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..58cb0954ce6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt new file mode 100644 index 00000000000..944ef26081a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt @@ -0,0 +1,52 @@ +package org.maw.library + +import android.content.Context +import android.databinding.BindingAdapter +import android.databinding.DataBindingComponent +import android.databinding.DataBindingUtil +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.FrameLayout +import android.widget.TextView +import org.maw.library.databinding.TestViewBinding + +class TestView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : FrameLayout(context, attrs, defStyleAttr) { + + init { + DataBindingUtil.inflate( + LayoutInflater.from(context), + R.layout.test_view, + this, + true, + object : DataBindingComponent { + override fun getTextLabelBindingAdapter(): TextLabelBindingAdapter { + return TextLabelBindingAdpaterImpl() + } + } + ) + } +} + +interface TextLabelBindingAdapter { + @BindingAdapter("textLabel") + fun setTextLabel( + errorMessageView: TextView, + textLabelType: Int + ) +} + +class TextLabelBindingAdpaterImpl : TextLabelBindingAdapter { + override fun setTextLabel( + errorMessageView: TextView, + textLabelType: Int + ) { + when (textLabelType) { + 0 -> errorMessageView.text = "Zero" + 1 -> errorMessageView.text = "One" + 2 -> errorMessageView.text = "Two" + } + } + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml new file mode 100644 index 00000000000..7d571ef8cd4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml new file mode 100644 index 00000000000..49fc91e1dd8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + library + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle index e7b4def49cb..33069973b21 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle @@ -1 +1 @@ -include ':app' +include ':app', ':library' diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index 031afcc42cd..d9ce72e13b4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -211,11 +211,9 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { val kaptExtension = project.extensions.getByType(KaptExtension::class.java) - val nonEmptyKaptConfigurations = kaptConfigurations.filter { it.dependencies.isNotEmpty() } - val context = Kapt3SubpluginContext( project, kotlinCompile, javaCompile, - kaptVariantData, sourceSetName, kotlinCompilation, kaptExtension, nonEmptyKaptConfigurations + kaptVariantData, sourceSetName, kotlinCompilation, kaptExtension, kaptConfigurations ) val kaptGenerateStubsTask = context.createKaptGenerateStubsTask()