From d5f0607cef375fd0a0b3fc8643fc95e2c93df4de Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Wed, 16 Aug 2017 21:38:50 +0300 Subject: [PATCH] Add tests for java-library support. --- .../KotlinGradlePluginMultiVersionIT.kt | 32 +++++++++++++++++++ .../javaLibraryProject/app/build.gradle | 7 ++++ .../app/src/main/kotlin/App.kt | 6 ++++ .../javaLibraryProject/build.gradle | 14 ++++++++ .../javaLibraryProject/libA/build.gradle | 6 ++++ .../libA/src/main/kotlin/HelloA.kt | 3 ++ .../javaLibraryProject/libB/build.gradle | 7 ++++ .../libB/src/main/kotlin/HelloB.kt | 3 ++ .../javaLibraryProject/settings.gradle | 1 + 9 files changed, 79 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/src/main/kotlin/App.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/src/main/kotlin/HelloA.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/src/main/kotlin/HelloB.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/settings.gradle diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt index 2abb63be5bc..e56243df0e1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin.gradle import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.modify +import org.junit.Assume import org.junit.Test import java.io.File import java.util.zip.ZipFile @@ -125,4 +126,35 @@ class KotlinGradlePluginMultiVersionIT : BaseMultiGradleVersionIT() { assertContains(":compileKotlin", ":compileTestKotlin") } } + + @Test + fun testJavaLibraryCompatibility() { + Assume.assumeTrue("The java-library plugin is supported only in Gradle 3.4+ (current: $gradleVersion)", + gradleVersion.split(".").map(String::toInt).let { (major, minor) -> + major > 3 || major == 3 && minor >= 4 + }) + + val project = Project("javaLibraryProject", gradleVersion) + val compileKotlinTasks = listOf(":libA:compileKotlin", ":libB:compileKotlin", ":app:compileKotlin") + project.build("build") { + assertSuccessful() + assertNotContains("Could not register Kotlin output") + assertTasksExecuted(compileKotlinTasks) + } + + // Modify a library source and its usage and re-build the project: + for (path in listOf("libA/src/main/kotlin/HelloA.kt", "libB/src/main/kotlin/HelloB.kt", "app/src/main/kotlin/App.kt")) { + File(project.projectDir, path).modify { original -> + original.replace("helloA", "helloA1") + .replace("helloB", "helloB1") + .apply { assert(!equals(original)) } + } + } + + project.build("build") { + assertSuccessful() + assertNotContains("Could not register Kotlin output") + assertTasksExecuted(compileKotlinTasks) + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/build.gradle new file mode 100644 index 00000000000..95dc2cf7ef7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'java' +apply plugin: 'kotlin' + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compile project(':libB') +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/src/main/kotlin/App.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/src/main/kotlin/App.kt new file mode 100644 index 00000000000..67330da0798 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/app/src/main/kotlin/App.kt @@ -0,0 +1,6 @@ +import com.example.* + +fun main(args: Array) { + println(helloA()) + println(helloB()) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/build.gradle new file mode 100644 index 00000000000..ce34e9a96eb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/build.gradle @@ -0,0 +1,14 @@ +buildscript { + repositories { + mavenLocal() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +subprojects { + repositories { + mavenLocal() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/build.gradle new file mode 100644 index 00000000000..0f32c18d089 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/build.gradle @@ -0,0 +1,6 @@ +apply plugin: 'java-library' +apply plugin: 'kotlin' + +dependencies { + api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/src/main/kotlin/HelloA.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/src/main/kotlin/HelloA.kt new file mode 100644 index 00000000000..cd5b2873c75 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libA/src/main/kotlin/HelloA.kt @@ -0,0 +1,3 @@ +package com.example + +fun helloA() = "Hello" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/build.gradle new file mode 100644 index 00000000000..6068d8085c8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/build.gradle @@ -0,0 +1,7 @@ +apply plugin: 'java-library' +apply plugin: 'kotlin' + +dependencies { + api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + api project(':libA') +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/src/main/kotlin/HelloB.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/src/main/kotlin/HelloB.kt new file mode 100644 index 00000000000..0c4dda37298 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/libB/src/main/kotlin/HelloB.kt @@ -0,0 +1,3 @@ +package com.example + +fun helloB() = helloA() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/settings.gradle new file mode 100644 index 00000000000..e93d9f66907 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/javaLibraryProject/settings.gradle @@ -0,0 +1 @@ +include ':libA', ':libB', ':app' \ No newline at end of file