From 02af631e14c2210da57ddc0ae61f5b00bbde9ca7 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 6 Jul 2018 17:03:37 +0300 Subject: [PATCH] Minor: move tests for incremental compilation of Kotlin when Java changes --- .../IncrementalCompilationMultiProjectIT.kt | 100 ---------------- .../kotlin/gradle/IncrementalJavaChangeIT.kt | 111 ++++++++++++++++++ 2 files changed, 111 insertions(+), 100 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt index 8f860d7d003..fb32fb1f096 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalCompilationMultiProjectIT.kt @@ -4,7 +4,6 @@ import org.jetbrains.kotlin.gradle.util.allKotlinFiles import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.getFilesByNames import org.jetbrains.kotlin.gradle.util.modify -import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Assert import org.junit.Test import java.io.File @@ -235,102 +234,3 @@ open class A { } } -class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = null) { - @Test - override fun testModifySignatureTrackedJavaInLib() { - doTest(trackedJavaClass, changeSignature, expectedAffectedSources = listOf("TrackedJavaClassChild.kt", "useTrackedJavaClass.kt")) - } - - @Test - override fun testModifyBodyTrackedJavaInLib() { - doTest(trackedJavaClass, changeBody, expectedAffectedSources = listOf()) - } -} - -class IncrementalJavaChangePreciseIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = true) { - @Test - override fun testModifySignatureTrackedJavaInLib() { - doTest(trackedJavaClass, changeSignature, expectedAffectedSources = listOf("TrackedJavaClassChild.kt", "useTrackedJavaClass.kt")) - } - - @Test - override fun testModifyBodyTrackedJavaInLib() { - doTest(trackedJavaClass, changeBody, expectedAffectedSources = listOf()) - } -} - -class IncrementalJavaChangeDisablePreciseIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = false) { - @Test - override fun testModifySignatureTrackedJavaInLib() { - doTest( - trackedJavaClass, changeSignature, - expectedAffectedSources = listOf( - "TrackedJavaClassChild.kt", "useTrackedJavaClass.kt", "useTrackedJavaClassFooMethodUsage.kt", - "useTrackedJavaClassSameModule.kt" - ) - ) - } - - @Test - override fun testModifyBodyTrackedJavaInLib() { - doTest( - trackedJavaClass, changeBody, - expectedAffectedSources = listOf( - "TrackedJavaClassChild.kt", "useTrackedJavaClass.kt", "useTrackedJavaClassFooMethodUsage.kt", - "useTrackedJavaClassSameModule.kt" - ) - ) - } -} - -abstract class IncrementalCompilationJavaChangesBase(val usePreciseJavaTracking: Boolean?) : BaseGradleIT() { - override fun defaultBuildOptions(): BuildOptions = - super.defaultBuildOptions().copy(withDaemon = true, incremental = true) - - protected val trackedJavaClass = "TrackedJavaClass.java" - private val javaClass = "JavaClass.java" - protected val changeBody: (String) -> String = { it.replace("Hello, World!", "Hello, World!!!!") } - protected val changeSignature: (String) -> String = { it.replace("String getString", "Object getString") } - - @Test - fun testModifySignatureJavaInLib() { - doTest( - javaClass, changeBody, - expectedAffectedSources = listOf("JavaClassChild.kt", "useJavaClass.kt", "useJavaClassFooMethodUsage.kt") - ) - } - - @Test - fun testModifyBodyJavaInLib() { - doTest( - javaClass, changeBody, - expectedAffectedSources = listOf("JavaClassChild.kt", "useJavaClass.kt", "useJavaClassFooMethodUsage.kt") - ) - } - - abstract fun testModifySignatureTrackedJavaInLib() - abstract fun testModifyBodyTrackedJavaInLib() - - protected fun doTest( - fileToModify: String, - transformFile: (String) -> String, - expectedAffectedSources: Collection - ) { - val project = Project("incrementalMultiproject") - - val options = defaultBuildOptions().copy(usePreciseJavaTracking = usePreciseJavaTracking) - project.build("build", options = options) { - assertSuccessful() - } - - val javaClassJava = project.projectDir.getFileByName(fileToModify) - javaClassJava.modify(transformFile) - - project.build("build", options = options) { - assertSuccessful() - val affectedSources = project.projectDir.getFilesByNames(*expectedAffectedSources.toTypedArray()) - val relativePaths = project.relativize(affectedSources) - assertCompiledKotlinSources(relativePaths, weakTesting = false) - } - } -} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt new file mode 100644 index 00000000000..90fa79ea489 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/IncrementalJavaChangeIT.kt @@ -0,0 +1,111 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. 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 + +import org.jetbrains.kotlin.gradle.util.getFileByName +import org.jetbrains.kotlin.gradle.util.getFilesByNames +import org.jetbrains.kotlin.gradle.util.modify +import org.junit.Test + +class IncrementalJavaChangeDefaultIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = null) { + @Test + override fun testModifySignatureTrackedJavaInLib() { + doTest(trackedJavaClass, changeSignature, expectedAffectedSources = listOf("TrackedJavaClassChild.kt", "useTrackedJavaClass.kt")) + } + + @Test + override fun testModifyBodyTrackedJavaInLib() { + doTest(trackedJavaClass, changeBody, expectedAffectedSources = listOf()) + } +} + +class IncrementalJavaChangePreciseIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = true) { + @Test + override fun testModifySignatureTrackedJavaInLib() { + doTest(trackedJavaClass, changeSignature, expectedAffectedSources = listOf("TrackedJavaClassChild.kt", "useTrackedJavaClass.kt")) + } + + @Test + override fun testModifyBodyTrackedJavaInLib() { + doTest(trackedJavaClass, changeBody, expectedAffectedSources = listOf()) + } +} + +class IncrementalJavaChangeDisablePreciseIT : IncrementalCompilationJavaChangesBase(usePreciseJavaTracking = false) { + @Test + override fun testModifySignatureTrackedJavaInLib() { + doTest( + trackedJavaClass, changeSignature, + expectedAffectedSources = listOf( + "TrackedJavaClassChild.kt", "useTrackedJavaClass.kt", "useTrackedJavaClassFooMethodUsage.kt", + "useTrackedJavaClassSameModule.kt" + ) + ) + } + + @Test + override fun testModifyBodyTrackedJavaInLib() { + doTest( + trackedJavaClass, changeBody, + expectedAffectedSources = listOf( + "TrackedJavaClassChild.kt", "useTrackedJavaClass.kt", "useTrackedJavaClassFooMethodUsage.kt", + "useTrackedJavaClassSameModule.kt" + ) + ) + } +} + +abstract class IncrementalCompilationJavaChangesBase(val usePreciseJavaTracking: Boolean?) : BaseGradleIT() { + override fun defaultBuildOptions(): BuildOptions = + super.defaultBuildOptions().copy(withDaemon = true, incremental = true) + + protected val trackedJavaClass = "TrackedJavaClass.java" + private val javaClass = "JavaClass.java" + protected val changeBody: (String) -> String = { it.replace("Hello, World!", "Hello, World!!!!") } + protected val changeSignature: (String) -> String = { it.replace("String getString", "Object getString") } + + @Test + fun testModifySignatureJavaInLib() { + doTest( + javaClass, changeBody, + expectedAffectedSources = listOf("JavaClassChild.kt", "useJavaClass.kt", "useJavaClassFooMethodUsage.kt") + ) + } + + @Test + fun testModifyBodyJavaInLib() { + doTest( + javaClass, changeBody, + expectedAffectedSources = listOf("JavaClassChild.kt", "useJavaClass.kt", "useJavaClassFooMethodUsage.kt") + ) + } + + abstract fun testModifySignatureTrackedJavaInLib() + abstract fun testModifyBodyTrackedJavaInLib() + + protected fun doTest( + fileToModify: String, + transformFile: (String) -> String, + expectedAffectedSources: Collection + ) { + val project = Project("incrementalMultiproject") + + val options = defaultBuildOptions().copy(usePreciseJavaTracking = usePreciseJavaTracking) + project.build("build", options = options) { + assertSuccessful() + } + + val javaClassJava = project.projectDir.getFileByName(fileToModify) + javaClassJava.modify(transformFile) + + project.build("build", options = options) { + assertSuccessful() + val affectedSources = project.projectDir.getFilesByNames(*expectedAffectedSources.toTypedArray()) + val relativePaths = project.relativize(affectedSources) + assertCompiledKotlinSources(relativePaths, weakTesting = false) + } + } +}