Kapt: Add tests for the command-line 'kapt' tool
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
# before
|
||||
-Kapt-verbose=blah
|
||||
|
||||
# after
|
||||
ERROR: Invalid option format, should be -Kapt-verbose=true/false
|
||||
@@ -0,0 +1,7 @@
|
||||
# before
|
||||
-Kapt-option=a:b
|
||||
|
||||
# after
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:aptMode=compile
|
||||
-Kapt-option=a:b
|
||||
@@ -0,0 +1,9 @@
|
||||
# before
|
||||
-Kapt-sources
|
||||
blah
|
||||
|
||||
# after
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:aptMode=compile
|
||||
-Kapt-sources
|
||||
blah
|
||||
@@ -0,0 +1,7 @@
|
||||
# before
|
||||
-help-kotlinc
|
||||
|
||||
# after
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:aptMode=compile
|
||||
-help-kotlinc
|
||||
@@ -0,0 +1,42 @@
|
||||
# before
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classpath=out/production/apt
|
||||
-Kapt-processors=test.Foo
|
||||
-Kapt-option:foo=true
|
||||
-Kapt-option:bar=abc
|
||||
-Kapt-javac-option:-Xmaxerrs=500
|
||||
-Kapt-verbose=true
|
||||
-Kapt-use-light-analysis=false
|
||||
-Kapt-correct-error-types=true
|
||||
-Kapt-map-diagnostic-locations=false
|
||||
-Kapt-mode=apt
|
||||
|
||||
# after
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:sources=output/sources
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:classes=output/classes
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:stubs=output/stubs
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:apclasspath=out/production/apt
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:processors=test.Foo
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:apOption=foo=true
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:apOption=bar=abc
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:javacOption=-Xmaxerrs=500
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:verbose=true
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:useLightAnalysis=false
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:correctErrorTypes=true
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:mapDiagnosticLocations=false
|
||||
-P
|
||||
plugin:org.jetbrains.kotlin.kapt3:aptMode=apt
|
||||
@@ -0,0 +1,3 @@
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
@@ -0,0 +1,30 @@
|
||||
# copy
|
||||
../simple/ap
|
||||
ap
|
||||
|
||||
# copy
|
||||
../simple/Test.kt
|
||||
Test.kt
|
||||
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
@apKotlincArgs.txt
|
||||
|
||||
# kapt
|
||||
@kaptArgs.txt
|
||||
|
||||
# javac
|
||||
@javacArgs.txt
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.TestKt
|
||||
|
||||
# after
|
||||
Generated class: generated.Test
|
||||
@@ -0,0 +1,6 @@
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Function.java
|
||||
output/sources/generated/Property.java
|
||||
output/sources/generated/Test.java
|
||||
@@ -0,0 +1,8 @@
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-processors=apt.SampleApt
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
@@ -0,0 +1,50 @@
|
||||
# copy
|
||||
../correctErrorTypesOn/ap
|
||||
ap
|
||||
|
||||
# copy
|
||||
../correctErrorTypesOn/Test.kt
|
||||
Test.kt
|
||||
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-processors=apt.SampleApt
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# javac
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Property.java
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.Test
|
||||
|
||||
# after
|
||||
Return code: 1
|
||||
|
||||
error: error: NonExistentClass type occurred
|
||||
Test.kt:4:8: error: unresolved reference: generated
|
||||
import generated.Property
|
||||
^
|
||||
Test.kt:8:28: error: unresolved reference: Property
|
||||
lateinit var property: Property
|
||||
^
|
||||
@@ -0,0 +1,14 @@
|
||||
package test
|
||||
|
||||
import apt.Anno
|
||||
import generated.Property
|
||||
|
||||
object Test {
|
||||
@field:Anno
|
||||
lateinit var property: Property
|
||||
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
print(javaClass.getDeclaredField("property").type.toGenericString())
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package apt
|
||||
|
||||
import javax.annotation.processing.*
|
||||
import javax.lang.model.SourceVersion
|
||||
import javax.lang.model.element.*
|
||||
import javax.lang.model.type.DeclaredType
|
||||
import javax.tools.Diagnostic.Kind.*
|
||||
|
||||
annotation class Anno
|
||||
|
||||
class SampleApt : AbstractProcessor() {
|
||||
override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
|
||||
for (element in roundEnv.getElementsAnnotatedWith(Anno::class.java).filterIsInstance<VariableElement>()) {
|
||||
val type = element.asType() as? DeclaredType ?: continue
|
||||
if (type.toString() == "error.NonExistentClass") {
|
||||
processingEnv.messager.printMessage(ERROR, "NonExistentClass type occurred")
|
||||
}
|
||||
|
||||
val generatedSimpleName = element.simpleName.toString().capitalize()
|
||||
processingEnv.filer.createSourceFile("generated.$generatedSimpleName").openWriter().use {
|
||||
it.write("package generated;\npublic class $generatedSimpleName {}")
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun getSupportedOptions() = emptySet<String>()
|
||||
override fun getSupportedSourceVersion() = SourceVersion.RELEASE_8
|
||||
override fun getSupportedAnnotationTypes() = setOf("apt.Anno")
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-processors=apt.SampleApt
|
||||
-Kapt-correct-error-types=true
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# javac
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Property.java
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.Test
|
||||
|
||||
# after
|
||||
public class generated.Property
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
# copy
|
||||
../simple/ap
|
||||
ap
|
||||
|
||||
# copy
|
||||
../simple/Test.kt
|
||||
Test.kt
|
||||
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-mode=stubs
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-mode=apt
|
||||
-Kapt-processors=apt.SampleApt
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# kotlinc
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
output/sources
|
||||
Test.kt
|
||||
|
||||
# javac
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Function.java
|
||||
output/sources/generated/Property.java
|
||||
output/sources/generated/Test.java
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.TestKt
|
||||
|
||||
# after
|
||||
Generated class: generated.Test
|
||||
@@ -0,0 +1,19 @@
|
||||
package test
|
||||
|
||||
import apt.Anno
|
||||
import generated.Test as TestGenerated
|
||||
|
||||
@Anno
|
||||
class Test {
|
||||
@field:Anno
|
||||
val property: String = ""
|
||||
|
||||
@Anno
|
||||
fun function() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
println("Generated class: " + TestGenerated::class.java.name)
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
apt.SampleApt
|
||||
@@ -0,0 +1,25 @@
|
||||
package apt
|
||||
|
||||
import javax.annotation.processing.*
|
||||
import javax.lang.model.SourceVersion
|
||||
import javax.lang.model.element.TypeElement
|
||||
import javax.tools.Diagnostic.Kind.*
|
||||
|
||||
annotation class Anno
|
||||
|
||||
class SampleApt : AbstractProcessor() {
|
||||
override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
|
||||
for (element in roundEnv.getElementsAnnotatedWith(Anno::class.java)) {
|
||||
val generatedSimpleName = element.simpleName.toString().capitalize()
|
||||
processingEnv.filer.createSourceFile("generated.$generatedSimpleName").openWriter().use {
|
||||
it.write("package generated;\npublic class $generatedSimpleName {}")
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun getSupportedOptions() = emptySet<String>()
|
||||
override fun getSupportedSourceVersion() = SourceVersion.RELEASE_8
|
||||
override fun getSupportedAnnotationTypes() = setOf("apt.Anno")
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
|
||||
# copy
|
||||
ap/META-INF/services/javax.annotation.processing.Processor
|
||||
output/ap/META-INF/services/javax.annotation.processing.Processor
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# javac
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Function.java
|
||||
output/sources/generated/Property.java
|
||||
output/sources/generated/Test.java
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.TestKt
|
||||
|
||||
# after
|
||||
Generated class: generated.Test
|
||||
@@ -0,0 +1,44 @@
|
||||
# copy
|
||||
../simple/ap
|
||||
ap
|
||||
|
||||
# copy
|
||||
../simple/Test.kt
|
||||
Test.kt
|
||||
|
||||
# mkdir
|
||||
output/ap
|
||||
output/stubs
|
||||
output/classes
|
||||
output/javaClasses
|
||||
output/sources
|
||||
|
||||
# kotlinc
|
||||
-cp %KOTLIN_STDLIB%
|
||||
-d output/ap
|
||||
ap/Processor.kt
|
||||
|
||||
# kapt
|
||||
-Kapt-stubs=output/stubs
|
||||
-Kapt-classes=output/classes
|
||||
-Kapt-sources=output/sources
|
||||
-Kapt-classpath=output/ap
|
||||
-Kapt-processors=apt.SampleApt
|
||||
-d output/classes
|
||||
-cp output/ap:%KOTLIN_STDLIB%
|
||||
Test.kt
|
||||
|
||||
# javac
|
||||
-cp output/ap
|
||||
-d output/javaClasses
|
||||
-proc:none
|
||||
output/sources/generated/Function.java
|
||||
output/sources/generated/Property.java
|
||||
output/sources/generated/Test.java
|
||||
|
||||
# java
|
||||
-cp output/classes:output/javaClasses:output/ap:%KOTLIN_STDLIB%
|
||||
test.TestKt
|
||||
|
||||
# after
|
||||
Generated class: generated.Test
|
||||
Reference in New Issue
Block a user