From 8a10de3a26ad920281142faa81925ab3cad237e6 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 16 Jun 2015 19:29:28 +0300 Subject: [PATCH] Add Gradle test for additional kapt arguments --- .../example/ExampleAnnotationProcessor.kt | 7 +++- .../kotlin/gradle/KotlinGradlePluginIT.kt | 13 ++++++ .../testProject/kaptArguments/build.gradle | 40 +++++++++++++++++++ .../kaptArguments/src/main/java/test.kt | 12 ++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/src/main/java/test.kt diff --git a/libraries/examples/annotation-processor-example/src/main/kotlin/example/ExampleAnnotationProcessor.kt b/libraries/examples/annotation-processor-example/src/main/kotlin/example/ExampleAnnotationProcessor.kt index 96d8a0917b6..02051d5a87c 100644 --- a/libraries/examples/annotation-processor-example/src/main/kotlin/example/ExampleAnnotationProcessor.kt +++ b/libraries/examples/annotation-processor-example/src/main/kotlin/example/ExampleAnnotationProcessor.kt @@ -11,6 +11,7 @@ public class ExampleAnnotationProcessor : AbstractProcessor() { private companion object { val ANNOTATION_FQ_NAME = javaClass().getCanonicalName() + val SUFFIX_OPTION = "suffix" } override fun process(annotations: MutableSet?, roundEnv: RoundEnvironment): Boolean { @@ -19,9 +20,11 @@ public class ExampleAnnotationProcessor : AbstractProcessor() { val elementUtils = processingEnv.getElementUtils() val filer = processingEnv.getFiler() + val generatedFileSuffix = processingEnv.getOptions().get(SUFFIX_OPTION) ?: "Generated" + for (element in elements) { val packageName = elementUtils.getPackageOf(element).getQualifiedName().toString() - val className = element.getSimpleName().toString().capitalize() + "Generated" + val className = element.getSimpleName().toString().capitalize() + generatedFileSuffix filer.createSourceFile(className).openWriter().use { with(it) { appendln("package $packageName;") @@ -36,4 +39,6 @@ public class ExampleAnnotationProcessor : AbstractProcessor() { override fun getSupportedSourceVersion() = SourceVersion.RELEASE_6 override fun getSupportedAnnotationTypes() = setOf(ANNOTATION_FQ_NAME) + + override fun getSupportedOptions() = setOf(SUFFIX_OPTION) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index d474201218b..ae73ce254b4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -85,4 +85,17 @@ class KotlinGradleIT: BaseGradleIT() { } } + Test fun testKaptArguments() { + Project("kaptArguments", "1.12").build("build") { + assertSuccessful() + assertContains("kapt: Using class file stubs") + assertContains(":compileKotlin") + assertContains(":compileJava") + assertFileExists("build/tmp/kapt/main/wrappers/annotations.main.txt") + assertFileExists("build/generated/source/kapt/main/TestClassCustomized.java") + assertFileExists("build/classes/main/example/TestClass.class") + assertFileExists("build/classes/main/example/TestClassCustomized.class") + } + } + } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/build.gradle new file mode 100644 index 00000000000..a2170d916d0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/build.gradle @@ -0,0 +1,40 @@ +buildscript { + repositories { + mavenCentral() + maven { + url 'file://' + pathToKotlinPlugin + } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:0.1-SNAPSHOT" + } +} + +apply plugin: "java" +apply plugin: "kotlin" + +repositories { + maven { + url 'file://' + pathToKotlinPlugin + } + mavenCentral() +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:0.1-SNAPSHOT" + compile "org.jetbrains.kotlin:annotation-processor-example:0.1-SNAPSHOT" + kapt "org.jetbrains.kotlin:annotation-processor-example:0.1-SNAPSHOT" +} + +task show << { + buildscript.configurations.classpath.each { println it } +} + +task wrapper(type: Wrapper) { + gradleVersion="1.12" +} + +kapt { + generateStubs = true + arg("suffix", "Customized") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/src/main/java/test.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/src/main/java/test.kt new file mode 100644 index 00000000000..97543eceb02 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/kaptArguments/src/main/java/test.kt @@ -0,0 +1,12 @@ +package example + +@example.ExampleAnnotation +public class TestClass { + + @example.ExampleAnnotation + public val testVal: String = "text" + + @example.ExampleAnnotation + public fun testFunction(): Class<*> = javaClass() + +} \ No newline at end of file