From 297f2d066949d8f715878bc73e140299e6930bc5 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 15 May 2015 20:21:58 +0300 Subject: [PATCH] Add annotation file parse tests in AP wrapper --- .../kotlin-annotation-processing/pom.xml | 13 ++++ .../annotation/AnnotationListParseTest.kt | 61 +++++++++++++++++++ .../parse/classAnnotations/annotations.txt | 4 ++ .../parse/classAnnotations/parsed.txt | 2 + .../parse/defaultPackage/annotations.txt | 8 +++ .../resources/parse/defaultPackage/parsed.txt | 5 ++ .../parse/fieldAnnotations/annotations.txt | 7 +++ .../parse/fieldAnnotations/parsed.txt | 4 ++ .../parse/localClasses/annotations.txt | 9 +++ .../resources/parse/localClasses/parsed.txt | 5 ++ .../parse/methodAnnotations/annotations.txt | 5 ++ .../parse/methodAnnotations/parsed.txt | 2 + .../parse/nestedClasses/annotations.txt | 10 +++ .../resources/parse/nestedClasses/parsed.txt | 6 ++ .../resources/parse/simple/annotations.txt | 3 + .../test/resources/parse/simple/parsed.txt | 1 + 16 files changed, 145 insertions(+) create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/parsed.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/annotations.txt create mode 100644 libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/parsed.txt diff --git a/libraries/tools/kotlin-annotation-processing/pom.xml b/libraries/tools/kotlin-annotation-processing/pom.xml index dc04ac48d4e..5d289010d7b 100644 --- a/libraries/tools/kotlin-annotation-processing/pom.xml +++ b/libraries/tools/kotlin-annotation-processing/pom.xml @@ -49,6 +49,7 @@ ${project.basedir}/src/main/kotlin + ${project.basedir}/src/test/kotlin @@ -75,6 +76,18 @@ + + maven-failsafe-plugin + 2.6 + + + + integration-test + verify + + + + diff --git a/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt b/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt new file mode 100644 index 00000000000..996c6918da9 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/kotlin/org/jetbrains/kotlin/annotation/AnnotationListParseTest.kt @@ -0,0 +1,61 @@ +package org.jetbrains.kotlin.annotation + +import org.junit.Test +import java.io.File +import org.junit.Assert.* + +public class AnnotationListParseTest { + + Test fun testClassAnnotations() = doTest("classAnnotations") + + Test fun testDefaultPackage() = doTest("defaultPackage") + + Test fun testFieldAnnotations() = doTest("fieldAnnotations") + + Test fun testLocalClasses() = doTest("localClasses") + + Test fun testMethodAnnotations() = doTest("methodAnnotations") + + Test fun testNestedClasses() = doTest("nestedClasses") + + Test fun testSimple() = doTest("simple") + + + private val resourcesRootFile = File("src/test/resources/parse") + + private fun doTest(testName: String) { + val annotationsFile = File(resourcesRootFile, "$testName/annotations.txt") + val expectedFile = File(resourcesRootFile, "$testName/parsed.txt") + + assertTrue(annotationsFile.getAbsolutePath() + " does not exist.", annotationsFile.exists()) + assertTrue(expectedFile.getAbsolutePath() + " does not exist.", expectedFile.exists()) + + val expectedParseResult = expectedFile.readText() + + val annotationProvider = FileKotlinAnnotationProvider(annotationsFile) + val parsedAnnotations = annotationProvider.annotatedKotlinElements + + val actualAnnotations = StringBuilder() + parsedAnnotations.forEach { + for (element in it.getValue()) { + actualAnnotations.append(it.getKey()).append(' ').append(element.classFqName) + when (element) { + is AnnotatedMethodDescriptor -> actualAnnotations.append(' ').append(element.methodName) + is AnnotatedFieldDescriptor -> actualAnnotations.append(' ').append(element.fieldName) + } + actualAnnotations.append('\n') + } + } + + val actualAnnotationsSorted = actualAnnotations.toString() + .lines().filter { it.isNotEmpty() }.sort().joinToString("\n") + + assertEquals(expectedParseResult, actualAnnotationsSorted) + } + + public class FileKotlinAnnotationProvider(val annotationsFile: File): KotlinAnnotationProvider() { + override val serializedAnnotations: String + get() = annotationsFile.readText() + } + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/annotations.txt new file mode 100644 index 00000000000..835d0f6a322 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/annotations.txt @@ -0,0 +1,4 @@ +a javax.inject.Named 0 +p org.test 0 +c 0 0/SomeClass +c 0 0/SomeObject diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/parsed.txt new file mode 100644 index 00000000000..4368c30e699 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/classAnnotations/parsed.txt @@ -0,0 +1,2 @@ +javax.inject.Named org.test.SomeClass +javax.inject.Named org.test.SomeObject \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/annotations.txt new file mode 100644 index 00000000000..12a11beb164 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/annotations.txt @@ -0,0 +1,8 @@ +a javax.inject.Named 0 +c 0 SomeClass +a javax.inject.Inject 1 +f 1 SomeClass annotatedProperty +a org.jetbrains.annotations.Nullable 2 +f 2 SomeClass annotatedProperty +m 2 SomeClass getAnnotatedProperty +m 1 SomeClass annotatedFunction diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/parsed.txt new file mode 100644 index 00000000000..c50ae366b5a --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/defaultPackage/parsed.txt @@ -0,0 +1,5 @@ +javax.inject.Inject SomeClass annotatedFunction +javax.inject.Inject SomeClass annotatedProperty +javax.inject.Named SomeClass +org.jetbrains.annotations.Nullable SomeClass annotatedProperty +org.jetbrains.annotations.Nullable SomeClass getAnnotatedProperty \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/annotations.txt new file mode 100644 index 00000000000..93072144e40 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/annotations.txt @@ -0,0 +1,7 @@ +a javax.inject.Inject 0 +p org.test 0 +f 0 0/SomeClass annotatedVal +a org.jetbrains.annotations.Nullable 1 +f 1 0/SomeClass annotatedVal +m 1 0/SomeClass getAnnotatedVal +f 0 0/SomeClass annotatedVar diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/parsed.txt new file mode 100644 index 00000000000..8abed7682d0 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/fieldAnnotations/parsed.txt @@ -0,0 +1,4 @@ +javax.inject.Inject org.test.SomeClass annotatedVal +javax.inject.Inject org.test.SomeClass annotatedVar +org.jetbrains.annotations.Nullable org.test.SomeClass annotatedVal +org.jetbrains.annotations.Nullable org.test.SomeClass getAnnotatedVal \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/annotations.txt new file mode 100644 index 00000000000..52bd9d146cb --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/annotations.txt @@ -0,0 +1,9 @@ +a javax.inject.Named 0 +p org.test 0 +c 0 0/SomeClass$someFunction$LocalClass +a javax.inject.Inject 1 +f 1 0/SomeClass$someFunction$LocalClass annotatedProperty +a org.jetbrains.annotations.Nullable 2 +f 2 0/SomeClass$someFunction$LocalClass annotatedProperty +m 2 0/SomeClass$someFunction$LocalClass getAnnotatedProperty +m 1 0/SomeClass$someFunction$LocalClass annotatedFunction diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/parsed.txt new file mode 100644 index 00000000000..67521be73fc --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/localClasses/parsed.txt @@ -0,0 +1,5 @@ +javax.inject.Inject org.test.SomeClass$someFunction$LocalClass annotatedFunction +javax.inject.Inject org.test.SomeClass$someFunction$LocalClass annotatedProperty +javax.inject.Named org.test.SomeClass$someFunction$LocalClass +org.jetbrains.annotations.Nullable org.test.SomeClass$someFunction$LocalClass annotatedProperty +org.jetbrains.annotations.Nullable org.test.SomeClass$someFunction$LocalClass getAnnotatedProperty \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/annotations.txt new file mode 100644 index 00000000000..0df56be2835 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/annotations.txt @@ -0,0 +1,5 @@ +a javax.inject.Inject 0 +p org.test 0 +m 0 0/SomeClass annotatedFunction +a javax.inject.Named 1 +m 1 0/SomeClass$annotatedFunction$1 invoke diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/parsed.txt new file mode 100644 index 00000000000..62c799ca229 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/methodAnnotations/parsed.txt @@ -0,0 +1,2 @@ +javax.inject.Inject org.test.SomeClass annotatedFunction +javax.inject.Named org.test.SomeClass$annotatedFunction$1 invoke \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/annotations.txt new file mode 100644 index 00000000000..06d233ba572 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/annotations.txt @@ -0,0 +1,10 @@ +a javax.inject.Named 0 +p org.test 0 +c 0 0/SomeClass$Companion +a org.jetbrains.annotations.NotNull 1 +m 1 0/SomeClass$Companion access$init$0 +c 0 0/SomeClass$SomeInnerObject +c 0 0/SomeClass$InnerClass +c 0 0/SomeClass$NestedClass +a java.lang.Deprecated 2 +f 2 0/SomeClass OBJECT$ diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/parsed.txt new file mode 100644 index 00000000000..eaab9ec8d68 --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/nestedClasses/parsed.txt @@ -0,0 +1,6 @@ +java.lang.Deprecated org.test.SomeClass OBJECT$ +javax.inject.Named org.test.SomeClass$Companion +javax.inject.Named org.test.SomeClass$InnerClass +javax.inject.Named org.test.SomeClass$NestedClass +javax.inject.Named org.test.SomeClass$SomeInnerObject +org.jetbrains.annotations.NotNull org.test.SomeClass$Companion access$init$0 \ No newline at end of file diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/annotations.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/annotations.txt new file mode 100644 index 00000000000..f93250b166f --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/annotations.txt @@ -0,0 +1,3 @@ +a javax.inject.Inject 0 +p org.test 0 +m 0 0/SomeClass annotatedFunction diff --git a/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/parsed.txt b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/parsed.txt new file mode 100644 index 00000000000..1a581def7df --- /dev/null +++ b/libraries/tools/kotlin-annotation-processing/src/test/resources/parse/simple/parsed.txt @@ -0,0 +1 @@ +javax.inject.Inject org.test.SomeClass annotatedFunction \ No newline at end of file