[Analysis API] migrate AbstractSymbolLightClassesTestBase to doTestByMainModuleAndOptionalMainFile

^KT-64805
This commit is contained in:
Dmitrii Gridin
2024-01-09 20:23:42 +01:00
committed by Space Team
parent 1aa2377c60
commit cf290a73fc
9 changed files with 22 additions and 27 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -29,7 +29,7 @@ abstract class AbstractSymbolLightClassesAnnotationEqualityTest(
override val currentExtension: String,
override val isTestAgainstCompiledCode: Boolean,
) : AbstractSymbolLightClassesTestBase(configurator) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val directives = module.directives
val expectedAnnotations = directives[Directives.EXPECTED]
val unexpectedAnnotations = directives[Directives.UNEXPECTED]
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -22,13 +22,13 @@ import java.nio.file.Path
abstract class AbstractSymbolLightClassesEqualityTestBase(
configurator: AnalysisApiTestConfigurator,
override val currentExtension: String,
override val isTestAgainstCompiledCode: Boolean
override val isTestAgainstCompiledCode: Boolean,
) : AbstractSymbolLightClassesTestBase(configurator) {
override fun getRenderResult(ktFile: KtFile, ktFiles: List<KtFile>, testDataFile: Path, module: TestModule, project: Project): String {
throw IllegalStateException("This test is not rendering light elements")
}
final override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
final override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val lightClasses = lightClassesToCheck(ktFiles, module, testServices)
if (lightClasses.isEmpty()) return
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -17,7 +17,7 @@ abstract class AbstractSymbolLightClassesParentingTestByFqName(
currentExtension: String,
stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesParentingTestBase(configurator, currentExtension, stopIfCompilationErrorDirectivePresent) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val fqName = LightClassTestCommon.fqNameInTestDataFile(testDataPath.toFile())
val ktFile = ktFiles.first()
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -17,7 +17,7 @@ abstract class AbstractSymbolLightClassesParentingTestByPsi(
currentExtension: String,
stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesParentingTestBase(configurator, currentExtension, stopIfCompilationErrorDirectivePresent) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val elementVisitor = createLightElementsVisitor(module.directives, testServices.assertions)
for (ktFile in ktFiles) {
for (psiClass in getLightClassesFromFile(ktFile)) {
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -26,7 +26,7 @@ abstract class AbstractSymbolLightClassesStructureByFqNameTest(
builder.useDirectives(Directives)
}
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val result = prettyPrint {
val fqName = module.directives.singleValue(Directives.FQ_NAME)
val psiClass = findLightClass(fqName, ktFiles.first().project)
@@ -18,7 +18,7 @@ abstract class AbstractSymbolLightClassesStructureTest(
stopIfCompilationErrorDirectivePresent: Boolean,
) : AbstractSymbolLightClassesStructureTestBase(configurator, testPrefix, stopIfCompilationErrorDirectivePresent) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
override fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
val result = prettyPrint {
for (ktFile in ktFiles.sortedBy(KtFile::getName)) {
if (ktFiles.size > 1) {
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.PsiClass
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
import org.jetbrains.kotlin.analysis.test.framework.project.structure.getKtFiles
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.CompiledLibraryProvider
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.TestModuleCompiler
@@ -28,12 +29,10 @@ import org.jetbrains.kotlin.test.directives.model.Directive
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
import org.jetbrains.kotlin.test.services.service
import org.jetbrains.kotlin.test.utils.FirIdenticalCheckerHelper
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.io.File
import java.nio.file.Path
@@ -45,7 +44,7 @@ import kotlin.test.fail
private const val TEST_MODULE_NAME = "light_idea_test_case"
abstract class AbstractSymbolLightClassesTestBase(
override val configurator: AnalysisApiTestConfigurator
override val configurator: AnalysisApiTestConfigurator,
) : AbstractAnalysisApiBasedTest() {
override fun configureTest(builder: TestConfigurationBuilder) {
@@ -61,16 +60,12 @@ abstract class AbstractSymbolLightClassesTestBase(
}
}
override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
val lastModule = with(moduleStructure.modules) {
find { it.name.substringBefore('-') == "main" } ?: last()
}
val ktFiles = testServices.ktModuleProvider.getModuleFiles(lastModule).filterIsInstance<KtFile>()
doTestByFileStructure(ktFiles, lastModule, testServices)
override fun doTestByMainModuleAndOptionalMainFile(mainFile: KtFile?, mainModule: TestModule, testServices: TestServices) {
val ktFiles = testServices.ktModuleProvider.getKtFiles(mainModule)
doLightClassTest(ktFiles, mainModule, testServices)
}
open fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
open fun doLightClassTest(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
if (isTestAgainstCompiledCode && TestModuleCompiler.Directives.COMPILATION_ERRORS in module.directives) {
return
}
@@ -105,7 +100,7 @@ abstract class AbstractSymbolLightClassesTestBase(
ktFiles: List<KtFile>,
testDataFile: Path,
module: TestModule,
project: Project
project: Project,
): String
protected fun ignoreExceptionIfIgnoreDirectivePresent(module: TestModule, action: () -> Unit) {
@@ -5,7 +5,7 @@ package common.pack
expect annotation class ExpectAnnotation
// MODULE: m2-jvm()()(m1-common)
// MODULE: main-jvm()()(m1-common)
// FILE: annotations.kt
package jvm.pack
@@ -14,7 +14,7 @@ class ClassToCheck {
}
}
// MODULE: m2-jvm()()(m1-common)
// MODULE: main-jvm()()(m1-common)
// FILE: annotations.kt
package jvm.pack