aboutsummaryrefslogtreecommitdiff
path: root/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt
diff options
context:
space:
mode:
Diffstat (limited to 'integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt')
-rw-r--r--integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt69
1 files changed, 69 insertions, 0 deletions
diff --git a/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt b/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt
new file mode 100644
index 00000000..30a8f01c
--- /dev/null
+++ b/integration-tests/src/test/kotlin/com/google/devtools/ksp/test/GeneratedRefsIncIT.kt
@@ -0,0 +1,69 @@
+package com.google.devtools.ksp.test
+
+import org.gradle.testkit.runner.GradleRunner
+import org.junit.Assert
+import org.junit.Rule
+import org.junit.Test
+import java.io.File
+
+class GeneratedRefsIncIT {
+ @Rule
+ @JvmField
+ val project: TemporaryTestProject = TemporaryTestProject("refs-gen", "test-processor")
+
+ @Test
+ fun testGeneratedRefsInc() {
+ val gradleRunner = GradleRunner.create().withProjectDir(project.root)
+
+ val expected = listOf(
+ "w: [ksp] 1: [File: Bar.kt, File: Baz.kt]",
+ "w: [ksp] 2: [File: Foo.kt]",
+ "w: [ksp] 3: [File: Goo.kt]"
+ )
+
+ val expectedBar = listOf(
+ "w: [ksp] 1: [File: Bar.kt]",
+ "w: [ksp] 2: [File: Foo.kt]",
+ "w: [ksp] 3: [File: Goo.kt]"
+ )
+
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expected, outputs)
+ }
+
+ File(project.root, "workload/src/main/kotlin/com/example/Baz.kt").appendText("\n\n")
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expected, outputs)
+ }
+
+ // Baz doesn't depend on Bar, so touching Bar won't invalidate Baz.
+ File(project.root, "workload/src/main/kotlin/com/example/Bar.kt").appendText("\n\n")
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expectedBar, outputs)
+ }
+
+ // Make Baz depends on Bar; Bar will be invalidated.
+ File(project.root, "workload/src/main/kotlin/com/example/Bar.kt").appendText("\nclass List<T>\n")
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expected, outputs)
+ }
+
+ // Baz depended on Bar, so Baz should be invalidated.
+ project.restore("workload/src/main/kotlin/com/example/Bar.kt")
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expected, outputs)
+ }
+
+ // Baz doesn't depend on Bar, so touching Bar won't invalidate Baz.
+ File(project.root, "workload/src/main/kotlin/com/example/Bar.kt").appendText("\n\n")
+ gradleRunner.withArguments("assemble").build().let { result ->
+ val outputs = result.output.lines().filter { it.startsWith("w: [ksp]") }
+ Assert.assertEquals(expectedBar, outputs)
+ }
+ }
+}