[SLC] AbstractSymbolLightClassesLoadingTest: generate light class for all compiled classes

This commit is contained in:
Dmitrii Gridin
2022-12-22 14:45:59 +01:00
committed by teamcity
parent 60ab3fa38e
commit 3b739d9a44
16 changed files with 430 additions and 15 deletions
@@ -23,7 +23,7 @@ abstract class AbstractSymbolLightClassesFacadeTest(
override val currentExtension: String,
override val stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesTestBase(configurator) {
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
val lightClasses = getFacades(project)
if (lightClasses.isEmpty()) return LightClassTestCommon.NOT_GENERATED_DIRECTIVE
return withExtendedTypeRenderer((testDataFile)) {
@@ -37,8 +37,6 @@ abstract class AbstractSymbolLightClassesFacadeTest(
val kotlinAsJavaSupport = KotlinAsJavaSupport.getInstance(project)
val scope = GlobalSearchScope.allScope(project)
val facades = kotlinAsJavaSupport.getFacadeNames(FqName.ROOT, scope).sorted()
return facades
.flatMap { facadeName -> kotlinAsJavaSupport.getFacadeClasses(FqName(facadeName), scope) }
.filterIsInstance<KtLightClass>()
return facades.flatMap { facadeName -> kotlinAsJavaSupport.getFacadeClasses(FqName(facadeName), scope) }
}
}
@@ -10,10 +10,8 @@ import com.intellij.psi.PsiClass
import com.intellij.psi.SyntaxTraverser
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
import org.jetbrains.kotlin.asJava.*
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.light.classes.symbol.base.service.withExtendedTypeRenderer
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.model.TestModule
import java.nio.file.Path
@@ -24,8 +22,8 @@ abstract class AbstractSymbolLightClassesLoadingTest(
override val stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesTestBase(configurator) {
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
val lightClasses = getLightClassesFromFile(ktFile, project)
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
val lightClasses = ktFiles.flatMap { getLightClassesFromFile(it, project) }
if (lightClasses.isEmpty()) return LightClassTestCommon.NOT_GENERATED_DIRECTIVE
return withExtendedTypeRenderer(testDataFile) {
lightClasses.joinToString("\n\n") { it.renderClass() }
@@ -33,7 +33,7 @@ abstract class AbstractSymbolLightClassesParentingTest(
lightClass?.accept(createLightAnnotationVisitor(testServices.assertions))
}
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
throw IllegalStateException("This test is not rendering light elements")
}
@@ -180,7 +180,7 @@ abstract class AbstractSymbolLightClassesStructureTest(
appendLine()
}
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
throw UnsupportedOperationException()
}
}
@@ -17,7 +17,7 @@ abstract class AbstractSymbolLightClassesTest(
override val currentExtension: String,
override val stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesTestBase(configurator) {
override fun getRenderResult(ktFile: KtFile, testDataFile: Path, module: TestModule, project: Project): String {
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
return LightClassTestCommon.getActualLightClassText(
testDataFile.toFile(),
{ fqName -> findLightClass(fqName, project) },
@@ -65,7 +65,7 @@ abstract class AbstractSymbolLightClassesTestBase(
val project = ktFile.project
ignoreExceptionIfIgnoreFirPresent(module) {
val actual = getRenderResult(ktFile, testDataPath, module, project).cleanup()
val actual = getRenderResult(ktFile, ktFiles, testDataPath, module, project).cleanup()
compareResults(testServices, actual)
removeIgnoreFir(module)
removeDuplicatedFirJava(testServices)
@@ -82,6 +82,7 @@ abstract class AbstractSymbolLightClassesTestBase(
protected abstract fun getRenderResult(
ktFile: KtFile,
ktFiles: List<KtFile>,
testDataFile: Path,
module: TestModule,
project: Project