From 141cf43153c8cb3d6417ab5e124f2d35ed235262 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 17 May 2018 17:43:34 +0300 Subject: [PATCH] Test: remove KotlinGradlePluginMultiVersionIT We run all tests with multiple Gradle versions now, so parametrized test is not needed anymore. Test cases are moved to relevant test classes. testKaptProcessorPath is removed because kapt1 is not supported anymore. --- .../kotlin/gradle/BaseMultiGradleVersionIT.kt | 20 --- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 50 +++++++ .../kotlin/gradle/KotlinGradlePluginIT.kt | 78 ++++++++++ .../KotlinGradlePluginMultiVersionIT.kt | 137 ------------------ 4 files changed, 128 insertions(+), 157 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseMultiGradleVersionIT.kt delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseMultiGradleVersionIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseMultiGradleVersionIT.kt deleted file mode 100644 index 80bee11f6e7..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseMultiGradleVersionIT.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.jetbrains.kotlin.gradle - -import org.junit.runner.RunWith -import org.junit.runners.Parameterized -import org.junit.runners.Parameterized.Parameter -import org.junit.runners.Parameterized.Parameters - -@RunWith(Parameterized::class) -abstract class BaseMultiGradleVersionIT : BaseGradleIT() { - @Parameter - lateinit var gradleVersionString: String - - protected val gradleVersion get() = GradleVersionRequired.Exact(gradleVersionString) - - companion object { - @JvmStatic - @Parameters(name = "Test with Gradle version {0}") - fun params() = listOf("3.5", "4.0").map { arrayOf(it) } - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index b5e01f0a661..f0bae950bf7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.gradle.tasks.USING_INCREMENTAL_COMPILATION_MESSAGE import org.jetbrains.kotlin.gradle.util.* import org.junit.Test import java.io.File +import java.util.zip.ZipFile abstract class Kapt3BaseIT : BaseGradleIT() { companion object { @@ -407,4 +408,53 @@ open class Kapt3IT : Kapt3BaseIT() { assertNotContains("Resolved!") } } + + @Test + fun testKt19179() { + val project = Project("kt19179", directoryPrefix = "kapt2") + + project.build("build") { + assertSuccessful() + assertFileExists("processor/build/tmp/kapt3/classes/main/META-INF/services/javax.annotation.processing.Processor") + + val processorJar = fileInWorkingDir("processor/build/libs/processor.jar") + assert(processorJar.exists()) + + val zip = ZipFile(processorJar) + @Suppress("ConvertTryFinallyToUseCall") + try { + assert(zip.getEntry("META-INF/services/javax.annotation.processing.Processor") != null) + } finally { + zip.close() + } + + assertTasksExecuted( + ":processor:kaptGenerateStubsKotlin", + ":processor:kaptKotlin", + ":app:kaptGenerateStubsKotlin", + ":app:kaptKotlin" + ) + } + + project.projectDir.getFileByName("Test.kt").modify { text -> + assert("SomeClass()" in text) + text.replace("SomeClass()", "SomeClass(); val a = 5") + } + + project.build("build") { + assertSuccessful() + assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin", ":app:kaptKotlin") + assertTasksExecuted(":app:kaptGenerateStubsKotlin") + } + + project.projectDir.getFileByName("Test.kt").modify { text -> + text + "\n\nfun t() {}" + } + + project.build("build") { + assertSuccessful() + assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin") + assertTasksExecuted(":app:kaptGenerateStubsKotlin", ":app:kaptKotlin") + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 238db3bcc3e..5353fa213df 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -806,4 +806,82 @@ class KotlinGradleIT : BaseGradleIT() { assertNotNull(metaInfDir.listFiles().singleOrNull { it.name.endsWith(".kotlin_module") }) } } + + @Test + fun testJavaIcCompatibility() { + val project = Project("kotlinJavaProject") + project.setupWorkingDir() + + val buildScript = File(project.projectDir, "build.gradle") + + buildScript.modify { "$it\n" + "compileJava.options.incremental = true" } + project.build("build") { + assertSuccessful() + } + + // Then modify a Java source and check that compileJava is incremental: + File(project.projectDir, "src/main/java/demo/HelloWorld.java").modify { "$it\n" + "class NewClass { }" } + project.build("build") { + assertSuccessful() + assertContains("Incremental compilation") + assertNotContains("not incremental") + } + + // Then modify a Kotlin source and check that Gradle sees that Java is not up-to-date: + File(project.projectDir, "src/main/kotlin/helloWorld.kt").modify { + it.trim('\r', '\n').trimEnd('}') + "\nval z: Int = 0 }" + } + project.build("build") { + assertSuccessful() + assertTasksExecuted(":compileKotlin", ":compileJava") + assertNotContains("not incremental") + assertNotContains("None of the classes needs to be compiled!") + } + } + + @Test + fun testApplyPluginFromBuildSrc() { + val project = Project("kotlinProjectWithBuildSrc") + project.setupWorkingDir() + File(project.projectDir, "buildSrc/build.gradle").modify { it.replace("\$kotlin_version", KOTLIN_VERSION) } + project.build("build") { + assertSuccessful() + } + } + + @Test + fun testInternalTest() { + Project("internalTest").build("build") { + assertSuccessful() + assertReportExists() + assertTasksExecuted(":compileKotlin", ":compileTestKotlin") + } + } + + @Test + fun testJavaLibraryCompatibility() { + val project = Project("javaLibraryProject") + + 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) + } + } } 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 deleted file mode 100644 index 3c859c96ba8..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginMultiVersionIT.kt +++ /dev/null @@ -1,137 +0,0 @@ -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 - -class KotlinGradlePluginMultiVersionIT : BaseMultiGradleVersionIT() { - @Test - fun testKt19179() { - val project = Project("kt19179", gradleVersion, directoryPrefix = "kapt2") - - project.build("build") { - assertSuccessful() - assertFileExists("processor/build/tmp/kapt3/classes/main/META-INF/services/javax.annotation.processing.Processor") - - val processorJar = fileInWorkingDir("processor/build/libs/processor.jar") - assert(processorJar.exists()) - - val zip = ZipFile(processorJar) - @Suppress("ConvertTryFinallyToUseCall") - try { - assert(zip.getEntry("META-INF/services/javax.annotation.processing.Processor") != null) - } finally { - zip.close() - } - - assertTasksExecuted( - ":processor:kaptGenerateStubsKotlin", - ":processor:kaptKotlin", - ":app:kaptGenerateStubsKotlin", - ":app:kaptKotlin" - ) - } - - project.projectDir.getFileByName("Test.kt").modify { text -> - assert("SomeClass()" in text) - text.replace("SomeClass()", "SomeClass(); val a = 5") - } - - project.build("build") { - assertSuccessful() - assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin", ":app:kaptKotlin") - assertTasksExecuted(":app:kaptGenerateStubsKotlin") - } - - project.projectDir.getFileByName("Test.kt").modify { text -> - text + "\n\nfun t() {}" - } - - project.build("build") { - assertSuccessful() - assertTasksUpToDate(":processor:kaptGenerateStubsKotlin", ":processor:kaptKotlin") - assertTasksExecuted(":app:kaptGenerateStubsKotlin", ":app:kaptKotlin") - } - } - - @Test - fun testJavaIcCompatibility() { - val project = Project("kotlinJavaProject", gradleVersion) - project.setupWorkingDir() - - val buildScript = File(project.projectDir, "build.gradle") - - buildScript.modify { "$it\n" + "compileJava.options.incremental = true" } - project.build("build") { - assertSuccessful() - } - - // Then modify a Java source and check that compileJava is incremental: - File(project.projectDir, "src/main/java/demo/HelloWorld.java").modify { "$it\n" + "class NewClass { }" } - project.build("build") { - assertSuccessful() - assertContains("Incremental compilation") - assertNotContains("not incremental") - } - - // Then modify a Kotlin source and check that Gradle sees that Java is not up-to-date: - File(project.projectDir, "src/main/kotlin/helloWorld.kt").modify { - it.trim('\r', '\n').trimEnd('}') + "\nval z: Int = 0 }" - } - project.build("build") { - assertSuccessful() - assertTasksExecuted(":compileKotlin", ":compileJava") - assertNotContains("not incremental") - assertNotContains("None of the classes needs to be compiled!") - } - } - - @Test - fun testApplyPluginFromBuildSrc() { - val project = Project("kotlinProjectWithBuildSrc", gradleVersion) - project.setupWorkingDir() - File(project.projectDir, "buildSrc/build.gradle").modify { it.replace("\$kotlin_version", KOTLIN_VERSION) } - project.build("build") { - assertSuccessful() - } - } - - @Test - fun testInternalTest() { - Project("internalTest", gradleVersion).build("build") { - assertSuccessful() - assertReportExists() - assertTasksExecuted(":compileKotlin", ":compileTestKotlin") - } - } - - @Test - fun testJavaLibraryCompatibility() { - val project = Project("javaLibraryProject") - - 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 -- GitLab