@@ -14,6 +14,7 @@ import org.junit.Test
1414import org.junit.runner.RunWith
1515import org.junit.runners.JUnit4
1616import org.mockito.Mockito.`when`
17+ import java.util.concurrent.atomic.AtomicInteger
1718
1819@RunWith(JUnit4 ::class )
1920class KspTest {
@@ -70,21 +71,23 @@ class KspTest {
7071 val processor = object : AbstractTestSymbolProcessor () {
7172 override fun process (resolver : Resolver ): List <KSAnnotated > {
7273 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+ }
8891 }
8992 return emptyList()
9093 }
@@ -201,19 +204,23 @@ class KspTest {
201204
202205 internal open class ClassGeneratingProcessor (
203206 private val packageName : String ,
204- private val className : String
207+ private val className : String ,
208+ times : Int = 1
205209 ) : AbstractTestSymbolProcessor() {
210+ val times = AtomicInteger (times)
206211 override fun process (resolver : Resolver ): List <KSAnnotated > {
207212 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+ }
217224 }
218225 return emptyList()
219226 }
0 commit comments