From b050722249721722dc077044d9dfc233a8634332 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 24 Mar 2016 22:07:09 +0300 Subject: [PATCH] Test: add android incremental compilation test project --- .../AbstractKotlinAndroidGradleTests.kt | 23 ++++++++ .../app/build.gradle | 54 +++++++++++++++++++ .../app/src/main/AndroidManifest.xml | 17 ++++++ .../app/src/main/java/foo/JavaActivity.java | 6 +++ .../src/main/kotlin/foo/KotlinActivity1.kt | 8 +++ .../src/main/kotlin/foo/KotlinActivity2.kt | 5 ++ .../app/src/main/kotlin/foo/getSomething.kt | 3 ++ .../build.gradle | 1 + .../settings.gradle | 1 + 9 files changed, 118 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/AndroidManifest.xml create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/java/foo/JavaActivity.java create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity1.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity2.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/getSomething.kt create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 167b8975ad1..dde799b3f2a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -64,6 +64,29 @@ abstract class AbstractKotlinAndroidGradleTests( } } + @Test + fun testIncrementalCompile() { + val project = Project("AndroidIncrementalSingleModuleProject", gradleVersion) + val options = defaultBuildOptions().copy(incremental = true) + + project.build("build", options = options) { + assertSuccessful() + } + + val getSomethingKt = project.projectDir.walk().filter { it.isFile && it.name.endsWith("getSomething.kt") }.first() + getSomethingKt.writeText(""" +package foo + +fun getSomething() = 10 +""") + + project.build("build", options = options) { + assertSuccessful() + assertCompiledKotlinSources(listOf("src/main/kotlin/foo/KotlinActivity1.kt", "src/main/kotlin/foo/getSomething.kt")) + assertCompiledJavaSources(listOf("app/src/main/java/foo/JavaActivity.java"), weakTesting = true) + } + } + @Test fun testModuleNameAndroid() { val project = Project("AndroidProject", gradleVersion) diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/build.gradle new file mode 100644 index 00000000000..72d83a2c378 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/build.gradle @@ -0,0 +1,54 @@ +buildscript { + repositories { + maven { + url 'file://' + pathToKotlinPlugin + } + maven { + url 'http://jcenter.bintray.com' + } + mavenCentral() + } + dependencies { + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT' + classpath 'org.jetbrains.kotlin:kotlin-android-extensions:0.1-SNAPSHOT' + classpath 'com.android.tools.build:gradle:' + androidToolsVersion + classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' + } +} + +apply plugin: 'android-sdk-manager' +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "foo" + minSdkVersion 14 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } +} + +repositories { + maven { + url 'file://' + pathToKotlinPlugin + } +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..071219494ca --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/java/foo/JavaActivity.java b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/java/foo/JavaActivity.java new file mode 100644 index 00000000000..311e68912e3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/java/foo/JavaActivity.java @@ -0,0 +1,6 @@ +package foo; + +import android.app.Activity; + +public class JavaActivity extends Activity { +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity1.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity1.kt new file mode 100644 index 00000000000..3df659de9f2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity1.kt @@ -0,0 +1,8 @@ +package foo + +import android.app.Activity + +open class KotlinActivity1 : Activity() { + val usage = getSomething() +} + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity2.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity2.kt new file mode 100644 index 00000000000..0a4bd27fa7e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/KotlinActivity2.kt @@ -0,0 +1,5 @@ +package foo + +import android.app.Activity + +open class KotlinActivity2 : Activity() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/getSomething.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/getSomething.kt new file mode 100644 index 00000000000..664261fea6e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/app/src/main/kotlin/foo/getSomething.kt @@ -0,0 +1,3 @@ +package foo + +fun getSomething() = "Hello, world!" diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/build.gradle new file mode 100644 index 00000000000..495c5038ea6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/build.gradle @@ -0,0 +1 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/settings.gradle new file mode 100644 index 00000000000..e7b4def49cb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidIncrementalSingleModuleProject/settings.gradle @@ -0,0 +1 @@ +include ':app'