diff options
Diffstat (limited to 'integration-tests/src/test/resources/incremental')
23 files changed, 220 insertions, 0 deletions
diff --git a/integration-tests/src/test/resources/incremental/build.gradle.kts b/integration-tests/src/test/resources/incremental/build.gradle.kts new file mode 100644 index 00000000..c5737a2e --- /dev/null +++ b/integration-tests/src/test/resources/incremental/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + kotlin("jvm") +} + +repositories { + mavenCentral() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") +} diff --git a/integration-tests/src/test/resources/incremental/gradle.properties b/integration-tests/src/test/resources/incremental/gradle.properties new file mode 100644 index 00000000..f9325643 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/gradle.properties @@ -0,0 +1,2 @@ +ksp.incremental=true +ksp.incremental.log=true
\ No newline at end of file diff --git a/integration-tests/src/test/resources/incremental/settings.gradle.kts b/integration-tests/src/test/resources/incremental/settings.gradle.kts new file mode 100644 index 00000000..75f651ef --- /dev/null +++ b/integration-tests/src/test/resources/incremental/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + val kspVersion: String by settings + val kotlinVersion: String by settings + val testRepo: String by settings + plugins { + id("com.google.devtools.ksp") version kspVersion + kotlin("jvm") version kotlinVersion + } + repositories { + maven(testRepo) + gradlePluginPortal() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") + } +} + +rootProject.name = "incremental-test" + +include(":workload") +include(":validator") diff --git a/integration-tests/src/test/resources/incremental/validator/build.gradle.kts b/integration-tests/src/test/resources/incremental/validator/build.gradle.kts new file mode 100644 index 00000000..ab249cf0 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/validator/build.gradle.kts @@ -0,0 +1,24 @@ +val kspVersion: String by project +val testRepo: String by project + +plugins { + kotlin("jvm") +} + +group = "com.example" +version = "1.0-SNAPSHOT" + +repositories { + maven(testRepo) + mavenCentral() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") +} + +dependencies { + implementation(kotlin("stdlib")) + implementation("com.google.devtools.ksp:symbol-processing-api:$kspVersion") +} + +sourceSets.main { + java.srcDirs("src/main/kotlin") +} diff --git a/integration-tests/src/test/resources/incremental/validator/src/main/kotlin/Validator.kt b/integration-tests/src/test/resources/incremental/validator/src/main/kotlin/Validator.kt new file mode 100644 index 00000000..96952d10 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/validator/src/main/kotlin/Validator.kt @@ -0,0 +1,62 @@ +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.* +import com.google.devtools.ksp.validate +import com.google.devtools.ksp.visitor.KSDefaultVisitor +import java.io.OutputStreamWriter + +class Validator : SymbolProcessor { + lateinit var codeGenerator: CodeGenerator + lateinit var logger: KSPLogger + var processed = false + + fun init( + options: Map<String, String>, + kotlinVersion: KotlinVersion, + codeGenerator: CodeGenerator, + logger: KSPLogger, + ) { + this.codeGenerator = codeGenerator + this.logger = logger + } + + override fun process(resolver: Resolver): List<KSAnnotated> { + if (processed) { + return emptyList() + } + val validator = object : KSDefaultVisitor<OutputStreamWriter, Unit>() { + override fun defaultHandler(node: KSNode, data: OutputStreamWriter) = Unit + + override fun visitDeclaration(declaration: KSDeclaration, data: OutputStreamWriter) { + data.write(declaration.qualifiedName?.asString() ?: declaration.simpleName.asString()) + declaration.validate() + } + } + + val files = resolver.getAllFiles() + files.forEach { file -> + logger.warn("${file.packageName.asString()}/${file.fileName}") + val output = OutputStreamWriter( + codeGenerator.createNewFile( + Dependencies(false, file), + file.packageName.asString(), file.fileName, "log" + ) + ) + file.declarations.forEach { + it.accept(validator, output) + } + output.close() + } + processed = true + return emptyList() + } +} + +class TestProcessorProvider : SymbolProcessorProvider { + override fun create( + env: SymbolProcessorEnvironment, + ): SymbolProcessor { + return Validator().apply { + init(env.options, env.kotlinVersion, env.codeGenerator, env.logger) + } + } +} diff --git a/integration-tests/src/test/resources/incremental/validator/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/integration-tests/src/test/resources/incremental/validator/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 00000000..c91e3e9e --- /dev/null +++ b/integration-tests/src/test/resources/incremental/validator/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1 @@ +TestProcessorProvider diff --git a/integration-tests/src/test/resources/incremental/workload/build.gradle.kts b/integration-tests/src/test/resources/incremental/workload/build.gradle.kts new file mode 100644 index 00000000..00e18e2a --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/build.gradle.kts @@ -0,0 +1,22 @@ +val testRepo: String by project + +plugins { + id("com.google.devtools.ksp") + kotlin("jvm") +} + +version = "1.0-SNAPSHOT" + +repositories { + maven(testRepo) + mavenCentral() + maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/") +} + +dependencies { + implementation(kotlin("stdlib")) + implementation(project(":validator")) + testImplementation("junit:junit:4.12") + ksp(project(":validator")) + kspTest(project(":validator")) +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J1.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J1.java new file mode 100644 index 00000000..b2e2e87c --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J1.java @@ -0,0 +1,3 @@ +package p1; + +public class J1 {} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J2.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J2.java new file mode 100644 index 00000000..7de0687e --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/J2.java @@ -0,0 +1,4 @@ +package p1; + +public class J2 { +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2J.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2J.java new file mode 100644 index 00000000..9866bfee --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2J.java @@ -0,0 +1,11 @@ +package p1; + +import p2.J2; +import p3.*; + +public class TestJ2J { + J1 j1 = null; + J2 j2 = null; + J3 j3 = null; +} + diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2K.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2K.java new file mode 100644 index 00000000..b5d055bb --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p1/TestJ2K.java @@ -0,0 +1,10 @@ +package p1; + +import p2.K2; +import p3.*; + +public class TestJ2K { + K1 k1 = null; + K2 k2 = null; + K3 k3 = null; +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p2/J2.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p2/J2.java new file mode 100644 index 00000000..1e10b7c4 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p2/J2.java @@ -0,0 +1,4 @@ +package p2; + +public class J2 { +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J1.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J1.java new file mode 100644 index 00000000..2e5ed679 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J1.java @@ -0,0 +1,4 @@ +package p3; + +public class J1 { +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J2.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J2.java new file mode 100644 index 00000000..fc7d454e --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J2.java @@ -0,0 +1,4 @@ +package p3; + +public class J2 { +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J3.java b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J3.java new file mode 100644 index 00000000..08cfb5ec --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/java/p3/J3.java @@ -0,0 +1,4 @@ +package p3; + +public class J3 { +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K1.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K1.kt new file mode 100644 index 00000000..eb739a3d --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K1.kt @@ -0,0 +1,3 @@ +package p1 + +open class K1 diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K2.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K2.kt new file mode 100644 index 00000000..e5134f49 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/K2.kt @@ -0,0 +1,3 @@ +package p1 + +open class K2 diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2J.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2J.kt new file mode 100644 index 00000000..81cb4d47 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2J.kt @@ -0,0 +1,10 @@ +package p1 + +import p2.J2 +import p3.* + +open class TestK2J() { + val v1: J1 = TODO() + val v2: J2 = TODO() + val v3: J3 = TODO() +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2K.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2K.kt new file mode 100644 index 00000000..401e340f --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p1/TestK2K.kt @@ -0,0 +1,10 @@ +package p1 + +import p2.K2 +import p3.* + +open class TestK2K() { + val v1: K1 = TODO() + val v2: K2 = TODO() + val v3: K3 = TODO() +} diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p2/K2.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p2/K2.kt new file mode 100644 index 00000000..55ae6f0a --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p2/K2.kt @@ -0,0 +1,3 @@ +package p2 + +open class K2 diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K1.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K1.kt new file mode 100644 index 00000000..6f727609 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K1.kt @@ -0,0 +1,3 @@ +package p3 + +open class K1 diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K2.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K2.kt new file mode 100644 index 00000000..d3aa0f93 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K2.kt @@ -0,0 +1,3 @@ +package p3 + +open class K2 diff --git a/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K3.kt b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K3.kt new file mode 100644 index 00000000..522ffff4 --- /dev/null +++ b/integration-tests/src/test/resources/incremental/workload/src/main/kotlin/p3/K3.kt @@ -0,0 +1,3 @@ +package p3 + +open class K3 |