Use types are origins for incremental KAPT and track generated source
This change introduces tracking of generated sources structure in order to e.g track classpath changes impacting generated sources. This fixes KT-42182. Also, origin tracking for isolating processors is now using types, allowing for origin elements from classpath. This fixes KT-34340. However, classpath origin is used only to invalidate generated files when the type changes and processing will not be requested for that type. This is in line with the incap spec.
This commit is contained in:
committed by
Mikhael Bogdanov
parent
d512158c25
commit
c7e5beece5
+2
-2
@@ -36,8 +36,8 @@ class DynamicIncrementalProcessorTest {
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/User.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/Address.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGenerated.java") to "test.User",
|
||||
generatedSources.resolve("test/AddressGenerated.java") to "test.Address"
|
||||
),
|
||||
dynamic.getGeneratedToSources()
|
||||
)
|
||||
|
||||
+13
-13
@@ -35,8 +35,8 @@ class IsolationgIncrementalProcessorTest {
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/User.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/Address.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGenerated.java") to "test.User",
|
||||
generatedSources.resolve("test/AddressGenerated.java") to "test.Address"
|
||||
),
|
||||
isolating.getGeneratedToSources()
|
||||
)
|
||||
@@ -62,12 +62,12 @@ class IsolationgIncrementalProcessorTest {
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGenerated.java") to TEST_DATA_DIR.resolve("User.java").absoluteFile,
|
||||
generatedSources.resolve("test/UserGeneratedClass.class") to TEST_DATA_DIR.resolve("User.java").absoluteFile,
|
||||
generatedSources.resolve("test/UserGeneratedResource") to TEST_DATA_DIR.resolve("User.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGenerated.java") to TEST_DATA_DIR.resolve("Address.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGeneratedClass.class") to TEST_DATA_DIR.resolve("Address.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGeneratedResource") to TEST_DATA_DIR.resolve("Address.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGenerated.java") to "test.User",
|
||||
generatedSources.resolve("test/UserGeneratedClass.class") to "test.User",
|
||||
generatedSources.resolve("test/UserGeneratedResource") to "test.User",
|
||||
generatedSources.resolve("test/AddressGenerated.java") to "test.Address",
|
||||
generatedSources.resolve("test/AddressGeneratedClass.class") to "test.Address",
|
||||
generatedSources.resolve("test/AddressGeneratedResource") to "test.Address"
|
||||
),
|
||||
isolating.getGeneratedToSources()
|
||||
)
|
||||
@@ -95,15 +95,15 @@ class IsolationgIncrementalProcessorTest {
|
||||
isolating.forEach { assertEquals(RuntimeProcType.ISOLATING, it.getRuntimeType()) }
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/User.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/Address.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGenerated.java") to "test.User",
|
||||
generatedSources.resolve("test/AddressGenerated.java") to "test.Address"
|
||||
), isolating[0].getGeneratedToSources()
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGeneratedTwo.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/User.java").absoluteFile,
|
||||
generatedSources.resolve("test/AddressGeneratedTwo.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/Address.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGeneratedTwo.java") to "test.User",
|
||||
generatedSources.resolve("test/AddressGeneratedTwo.java") to "test.Address"
|
||||
), isolating[1].getGeneratedToSources()
|
||||
)
|
||||
}
|
||||
@@ -116,7 +116,7 @@ class IsolationgIncrementalProcessorTest {
|
||||
|
||||
assertEquals(
|
||||
mapOf(
|
||||
generatedSources.resolve("test/UserGenerated.java") to File("plugins/kapt3/kapt3-base/testData/runner/incremental/User.java").absoluteFile
|
||||
generatedSources.resolve("test/UserGenerated.java") to "test.User"
|
||||
), isolating[0].getGeneratedToSources()
|
||||
)
|
||||
}
|
||||
|
||||
+7
-29
@@ -12,7 +12,6 @@ import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.TemporaryFolder
|
||||
import java.io.File
|
||||
import java.io.ObjectOutputStream
|
||||
|
||||
class JavaClassCacheManagerTest {
|
||||
|
||||
@@ -56,7 +55,8 @@ class JavaClassCacheManagerTest {
|
||||
}
|
||||
prepareForIncremental()
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(File("Mentioned.java")), emptyList()) as SourcesToReprocess.Incremental
|
||||
val dirtyFiles =
|
||||
cache.invalidateAndGetDirtyFiles(listOf(File("Mentioned.java").absoluteFile), emptyList()) as SourcesToReprocess.Incremental
|
||||
assertEquals(
|
||||
listOf(
|
||||
File("Mentioned.java").absoluteFile,
|
||||
@@ -84,7 +84,8 @@ class JavaClassCacheManagerTest {
|
||||
}
|
||||
prepareForIncremental()
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(File("Mentioned.java")), emptyList()) as SourcesToReprocess.Incremental
|
||||
val dirtyFiles =
|
||||
cache.invalidateAndGetDirtyFiles(listOf(File("Mentioned.java").absoluteFile), emptyList()) as SourcesToReprocess.Incremental
|
||||
assertEquals(
|
||||
listOf(
|
||||
File("Mentioned.java").absoluteFile,
|
||||
@@ -112,7 +113,8 @@ class JavaClassCacheManagerTest {
|
||||
}
|
||||
prepareForIncremental()
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(File("TwoTypes.java")), emptyList()) as SourcesToReprocess.Incremental
|
||||
val dirtyFiles =
|
||||
cache.invalidateAndGetDirtyFiles(listOf(File("TwoTypes.java").absoluteFile), emptyList()) as SourcesToReprocess.Incremental
|
||||
assertEquals(
|
||||
listOf(
|
||||
File("TwoTypes.java").absoluteFile,
|
||||
@@ -155,7 +157,7 @@ class JavaClassCacheManagerTest {
|
||||
|
||||
val dirtyFiles =
|
||||
cache.invalidateAndGetDirtyFiles(
|
||||
listOf(File("Constants.java")), emptyList()
|
||||
listOf(File("Constants.java").absoluteFile), emptyList()
|
||||
) as SourcesToReprocess.Incremental
|
||||
assertEquals(
|
||||
listOf(File("Constants.java").absoluteFile, File("MentionsConst.java").absoluteFile),
|
||||
@@ -163,30 +165,6 @@ class JavaClassCacheManagerTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testWithAnnotations() {
|
||||
SourceFileStructure(File("Annotated1.java").toURI()).also {
|
||||
it.addDeclaredType("test.Annotated1")
|
||||
it.addMentionedAnnotations("test.Annotation")
|
||||
cache.javaCache.addSourceStructure(it)
|
||||
}
|
||||
SourceFileStructure(File("Annotated2.java").toURI()).also {
|
||||
it.addDeclaredType("test.Annotated2")
|
||||
it.addMentionedAnnotations("com.test.MyAnnotation")
|
||||
cache.javaCache.addSourceStructure(it)
|
||||
}
|
||||
SourceFileStructure(File("Annotated3.java").toURI()).also {
|
||||
it.addDeclaredType("test.Annotated3")
|
||||
it.addMentionedAnnotations("Runnable")
|
||||
cache.javaCache.addSourceStructure(it)
|
||||
}
|
||||
prepareForIncremental()
|
||||
|
||||
assertEquals(setOf(File("Annotated1.java").absoluteFile), cache.javaCache.invalidateEntriesAnnotatedWith(setOf("test.Annotation")))
|
||||
assertEquals(setOf(File("Annotated2.java").absoluteFile), cache.javaCache.invalidateEntriesAnnotatedWith(setOf("com.test.*")))
|
||||
assertEquals(setOf(File("Annotated3.java").absoluteFile), cache.javaCache.invalidateEntriesAnnotatedWith(setOf("*")))
|
||||
}
|
||||
|
||||
private fun prepareForIncremental() {
|
||||
cache.close()
|
||||
cache = JavaClassCacheManager(cacheDir)
|
||||
|
||||
+3
-3
@@ -36,7 +36,7 @@ class TestSimpleIncrementalAptCache {
|
||||
fun testAggregatingAnnotations() {
|
||||
runProcessor(SimpleProcessor().toAggregating())
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java")), emptyList()) as SourcesToReprocess.Incremental
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java").absoluteFile), emptyList()) as SourcesToReprocess.Incremental
|
||||
assertEquals(
|
||||
listOf(TEST_DATA_DIR.resolve("User.java").absoluteFile, TEST_DATA_DIR.resolve("Address.java").absoluteFile),
|
||||
dirtyFiles.toReprocess
|
||||
@@ -49,7 +49,7 @@ class TestSimpleIncrementalAptCache {
|
||||
fun testIsolatingAnnotations() {
|
||||
runProcessor(SimpleProcessor().toIsolating())
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java")), emptyList()) as SourcesToReprocess.Incremental
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java").absoluteFile), emptyList()) as SourcesToReprocess.Incremental
|
||||
assertFalse(generatedSources.resolve("test/UserGenerated.java").exists())
|
||||
assertEquals(
|
||||
listOf(TEST_DATA_DIR.resolve("User.java").absoluteFile),
|
||||
@@ -61,7 +61,7 @@ class TestSimpleIncrementalAptCache {
|
||||
fun testNonIncremental() {
|
||||
runProcessor(SimpleProcessor().toNonIncremental())
|
||||
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java")), emptyList())
|
||||
val dirtyFiles = cache.invalidateAndGetDirtyFiles(listOf(TEST_DATA_DIR.resolve("User.java").absoluteFile), emptyList())
|
||||
assertTrue(dirtyFiles is SourcesToReprocess.FullRebuild)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user