diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt index 9c51178b7e3..9bdd60cca8b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalIT.kt @@ -1,10 +1,8 @@ package org.jetbrains.kotlin.gradle -import org.jetbrains.kotlin.gradle.util.allKotlinFiles -import org.jetbrains.kotlin.gradle.util.findFileByName -import org.jetbrains.kotlin.gradle.util.getFileByName -import org.jetbrains.kotlin.gradle.util.modify +import org.jetbrains.kotlin.gradle.util.* import org.junit.Test +import kotlin.test.assertEquals open class KaptIncrementalIT : BaseGradleIT() { companion object { @@ -204,6 +202,35 @@ open class KaptIncrementalIT : BaseGradleIT() { } } + @Test + fun testRemoveAllKotlinSources() { + val project = getProject() + val kapt3StubsPath = "build/tmp/kapt3/stubs/main" + + project.build("build") { + assertSuccessful() + assertKapt3FullyExecuted() + } + + with(project.projectDir) { + resolve("src/main/java").deleteRecursively() + resolve("src/main/java/bar").mkdirs() + resolve("src/main/java/bar/MyClass.java").writeText( + """ + package bar; + public class MyClass {} + """.trimIndent() + ) + } + + project.build("build") { + assertSuccessful() + + // Make sure all stubs are removed + assertEquals(emptyList(), fileInWorkingDir(kapt3StubsPath).walk().filter { it.extension == "java" }.toList()) + } + } + @Test fun testRemoveAnnotations() { val project = getProject() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 31f76b2236f..0931274bdba 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -296,7 +296,8 @@ abstract class AbstractKotlinCompile() : AbstractKo logger.kotlinDebug { "All kotlin sources: ${allKotlinSources.pathsAsStringRelativeTo(project.rootProject.projectDir)}" } - if (allKotlinSources.isEmpty()) { + if (!inputs.isIncremental && allKotlinSources.isEmpty()) { + // Skip running only if non-incremental run. Otherwise, we may need to do some cleanup. logger.kotlinDebug { "No Kotlin files found, skipping Kotlin compiler task" } return }