From cf290a73fc33adeddeb21aa1a9af90c70d608d36 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 9 Jan 2024 20:23:42 +0100 Subject: [PATCH] [Analysis API] migrate AbstractSymbolLightClassesTestBase to doTestByMainModuleAndOptionalMainFile ^KT-64805 --- ...ymbolLightClassesAnnotationEqualityTest.kt | 4 ++-- ...tractSymbolLightClassesEqualityTestBase.kt | 6 +++--- ...SymbolLightClassesParentingTestByFqName.kt | 4 ++-- ...actSymbolLightClassesParentingTestByPsi.kt | 4 ++-- ...SymbolLightClassesStructureByFqNameTest.kt | 4 ++-- ...AbstractSymbolLightClassesStructureTest.kt | 2 +- .../AbstractSymbolLightClassesTestBase.kt | 21 +++++++------------ .../typeAliasActualization.kt | 2 +- .../typeAliasActualization2.kt | 2 +- 9 files changed, 22 insertions(+), 27 deletions(-) diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesAnnotationEqualityTest.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesAnnotationEqualityTest.kt index ee1b012e035..a2e7a950239 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesAnnotationEqualityTest.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesAnnotationEqualityTest.kt @@ -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, module: TestModule, testServices: TestServices) { + override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val directives = module.directives val expectedAnnotations = directives[Directives.EXPECTED] val unexpectedAnnotations = directives[Directives.UNEXPECTED] diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesEqualityTestBase.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesEqualityTestBase.kt index 271a72a01e1..90661043b29 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesEqualityTestBase.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesEqualityTestBase.kt @@ -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, testDataFile: Path, module: TestModule, project: Project): String { throw IllegalStateException("This test is not rendering light elements") } - final override fun doTestByFileStructure(ktFiles: List, module: TestModule, testServices: TestServices) { + final override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val lightClasses = lightClassesToCheck(ktFiles, module, testServices) if (lightClasses.isEmpty()) return diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByFqName.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByFqName.kt index bf6567beea0..4d3df855a12 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByFqName.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByFqName.kt @@ -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, module: TestModule, testServices: TestServices) { + override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val fqName = LightClassTestCommon.fqNameInTestDataFile(testDataPath.toFile()) val ktFile = ktFiles.first() diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByPsi.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByPsi.kt index b97f19d02fc..5280c47bcd8 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByPsi.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesParentingTestByPsi.kt @@ -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, module: TestModule, testServices: TestServices) { + override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val elementVisitor = createLightElementsVisitor(module.directives, testServices.assertions) for (ktFile in ktFiles) { for (psiClass in getLightClassesFromFile(ktFile)) { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureByFqNameTest.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureByFqNameTest.kt index 4d047259eb4..dda5c62d387 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureByFqNameTest.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureByFqNameTest.kt @@ -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, module: TestModule, testServices: TestServices) { + override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val result = prettyPrint { val fqName = module.directives.singleValue(Directives.FQ_NAME) val psiClass = findLightClass(fqName, ktFiles.first().project) diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTest.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTest.kt index a4a84b7aa85..a06a2c4de09 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTest.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesStructureTest.kt @@ -18,7 +18,7 @@ abstract class AbstractSymbolLightClassesStructureTest( stopIfCompilationErrorDirectivePresent: Boolean, ) : AbstractSymbolLightClassesStructureTestBase(configurator, testPrefix, stopIfCompilationErrorDirectivePresent) { - override fun doTestByFileStructure(ktFiles: List, module: TestModule, testServices: TestServices) { + override fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { val result = prettyPrint { for (ktFile in ktFiles.sortedBy(KtFile::getName)) { if (ktFiles.size > 1) { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt index 4e71f709f51..1ab82bd04df 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt @@ -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() - 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, module: TestModule, testServices: TestServices) { + open fun doLightClassTest(ktFiles: List, module: TestModule, testServices: TestServices) { if (isTestAgainstCompiledCode && TestModuleCompiler.Directives.COMPILATION_ERRORS in module.directives) { return } @@ -105,7 +100,7 @@ abstract class AbstractSymbolLightClassesTestBase( ktFiles: List, testDataFile: Path, module: TestModule, - project: Project + project: Project, ): String protected fun ignoreExceptionIfIgnoreDirectivePresent(module: TestModule, action: () -> Unit) { diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization.kt index 0692aa4549d..aa58e6ca0a9 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization.kt +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization.kt @@ -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 diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization2.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization2.kt index ebb3e1b9ccc..f0a82104dd9 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization2.kt +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization2.kt @@ -14,7 +14,7 @@ class ClassToCheck { } } -// MODULE: m2-jvm()()(m1-common) +// MODULE: main-jvm()()(m1-common) // FILE: annotations.kt package jvm.pack