@@ -14,6 +14,7 @@ import org.junit.Test
14
14
import org.junit.runner.RunWith
15
15
import org.junit.runners.JUnit4
16
16
import org.mockito.Mockito.`when`
17
+ import java.util.concurrent.atomic.AtomicInteger
17
18
18
19
@RunWith(JUnit4 ::class )
19
20
class KspTest {
@@ -70,21 +71,23 @@ class KspTest {
70
71
val processor = object : AbstractTestSymbolProcessor () {
71
72
override fun process (resolver : Resolver ): List <KSAnnotated > {
72
73
val symbols = resolver.getSymbolsWithAnnotation(" foo.bar.TestAnnotation" )
73
- assertThat(symbols.size).isEqualTo(1 )
74
- val klass = symbols.first()
75
- check(klass is KSClassDeclaration )
76
- val qName = klass.qualifiedName ? : error(" should've found qualified name" )
77
- val genPackage = " ${qName.getQualifier()} .generated"
78
- val genClassName = " ${qName.getShortName()} _Gen"
79
- codeGenerator.createNewFile(
80
- dependencies = Dependencies .ALL_FILES ,
81
- packageName = genPackage,
82
- fileName = genClassName
83
- ).bufferedWriter(Charsets .UTF_8 ).use {
84
- it.write("""
85
- package $genPackage
86
- class $genClassName () {}
87
- """ .trimIndent())
74
+ if (symbols.isNotEmpty()) {
75
+ assertThat(symbols.size).isEqualTo(1 )
76
+ val klass = symbols.first()
77
+ check(klass is KSClassDeclaration )
78
+ val qName = klass.qualifiedName ? : error(" should've found qualified name" )
79
+ val genPackage = " ${qName.getQualifier()} .generated"
80
+ val genClassName = " ${qName.getShortName()} _Gen"
81
+ codeGenerator.createNewFile(
82
+ dependencies = Dependencies .ALL_FILES ,
83
+ packageName = genPackage,
84
+ fileName = genClassName
85
+ ).bufferedWriter(Charsets .UTF_8 ).use {
86
+ it.write("""
87
+ package $genPackage
88
+ class $genClassName () {}
89
+ """ .trimIndent())
90
+ }
88
91
}
89
92
return emptyList()
90
93
}
@@ -201,19 +204,23 @@ class KspTest {
201
204
202
205
internal open class ClassGeneratingProcessor (
203
206
private val packageName : String ,
204
- private val className : String
207
+ private val className : String ,
208
+ times : Int = 1
205
209
) : AbstractTestSymbolProcessor() {
210
+ val times = AtomicInteger (times)
206
211
override fun process (resolver : Resolver ): List <KSAnnotated > {
207
212
super .process(resolver)
208
- codeGenerator.createNewFile(
209
- dependencies = Dependencies .ALL_FILES ,
210
- packageName = packageName,
211
- fileName = className
212
- ).bufferedWriter(Charsets .UTF_8 ).use {
213
- it.write("""
214
- package $packageName
215
- class $className () {}
216
- """ .trimIndent())
213
+ if (times.decrementAndGet() == 0 ) {
214
+ codeGenerator.createNewFile(
215
+ dependencies = Dependencies .ALL_FILES ,
216
+ packageName = packageName,
217
+ fileName = className
218
+ ).bufferedWriter(Charsets .UTF_8 ).use {
219
+ it.write("""
220
+ package $packageName
221
+ class $className () {}
222
+ """ .trimIndent())
223
+ }
217
224
}
218
225
return emptyList()
219
226
}
0 commit comments