[Analysis API] migrate AbstractSymbolLightClassesTestBase to doTestByMainModuleAndOptionalMainFile
^KT-64805
This commit is contained in:
committed by
Space Team
parent
1aa2377c60
commit
cf290a73fc
+2
-2
@@ -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.
|
* 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 currentExtension: String,
|
||||||
override val isTestAgainstCompiledCode: Boolean,
|
override val isTestAgainstCompiledCode: Boolean,
|
||||||
) : AbstractSymbolLightClassesTestBase(configurator) {
|
) : 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 directives = module.directives
|
||||||
val expectedAnnotations = directives[Directives.EXPECTED]
|
val expectedAnnotations = directives[Directives.EXPECTED]
|
||||||
val unexpectedAnnotations = directives[Directives.UNEXPECTED]
|
val unexpectedAnnotations = directives[Directives.UNEXPECTED]
|
||||||
|
|||||||
+3
-3
@@ -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.
|
* 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(
|
abstract class AbstractSymbolLightClassesEqualityTestBase(
|
||||||
configurator: AnalysisApiTestConfigurator,
|
configurator: AnalysisApiTestConfigurator,
|
||||||
override val currentExtension: String,
|
override val currentExtension: String,
|
||||||
override val isTestAgainstCompiledCode: Boolean
|
override val isTestAgainstCompiledCode: Boolean,
|
||||||
) : AbstractSymbolLightClassesTestBase(configurator) {
|
) : AbstractSymbolLightClassesTestBase(configurator) {
|
||||||
override fun getRenderResult(ktFile: KtFile, ktFiles: List<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")
|
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)
|
val lightClasses = lightClassesToCheck(ktFiles, module, testServices)
|
||||||
if (lightClasses.isEmpty()) return
|
if (lightClasses.isEmpty()) return
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -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.
|
* 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,
|
currentExtension: String,
|
||||||
stopIfCompilationErrorDirectivePresent: Boolean,
|
stopIfCompilationErrorDirectivePresent: Boolean,
|
||||||
) : AbstractSymbolLightClassesParentingTestBase(configurator, currentExtension, stopIfCompilationErrorDirectivePresent) {
|
) : 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 fqName = LightClassTestCommon.fqNameInTestDataFile(testDataPath.toFile())
|
||||||
|
|
||||||
val ktFile = ktFiles.first()
|
val ktFile = ktFiles.first()
|
||||||
|
|||||||
+2
-2
@@ -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.
|
* 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,
|
currentExtension: String,
|
||||||
stopIfCompilationErrorDirectivePresent: Boolean,
|
stopIfCompilationErrorDirectivePresent: Boolean,
|
||||||
) : AbstractSymbolLightClassesParentingTestBase(configurator, currentExtension, stopIfCompilationErrorDirectivePresent) {
|
) : 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)
|
val elementVisitor = createLightElementsVisitor(module.directives, testServices.assertions)
|
||||||
for (ktFile in ktFiles) {
|
for (ktFile in ktFiles) {
|
||||||
for (psiClass in getLightClassesFromFile(ktFile)) {
|
for (psiClass in getLightClassesFromFile(ktFile)) {
|
||||||
|
|||||||
+2
-2
@@ -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.
|
* 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)
|
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 result = prettyPrint {
|
||||||
val fqName = module.directives.singleValue(Directives.FQ_NAME)
|
val fqName = module.directives.singleValue(Directives.FQ_NAME)
|
||||||
val psiClass = findLightClass(fqName, ktFiles.first().project)
|
val psiClass = findLightClass(fqName, ktFiles.first().project)
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ abstract class AbstractSymbolLightClassesStructureTest(
|
|||||||
stopIfCompilationErrorDirectivePresent: Boolean,
|
stopIfCompilationErrorDirectivePresent: Boolean,
|
||||||
) : AbstractSymbolLightClassesStructureTestBase(configurator, testPrefix, stopIfCompilationErrorDirectivePresent) {
|
) : 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 {
|
val result = prettyPrint {
|
||||||
for (ktFile in ktFiles.sortedBy(KtFile::getName)) {
|
for (ktFile in ktFiles.sortedBy(KtFile::getName)) {
|
||||||
if (ktFiles.size > 1) {
|
if (ktFiles.size > 1) {
|
||||||
|
|||||||
+8
-13
@@ -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.
|
* 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.PsiClass
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
|
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.project.structure.ktModuleProvider
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.CompiledLibraryProvider
|
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.CompiledLibraryProvider
|
||||||
import org.jetbrains.kotlin.analysis.test.framework.services.libraries.TestModuleCompiler
|
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.DirectiveApplicability
|
||||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
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.TestServices
|
||||||
import org.jetbrains.kotlin.test.services.assertions
|
import org.jetbrains.kotlin.test.services.assertions
|
||||||
import org.jetbrains.kotlin.test.services.service
|
import org.jetbrains.kotlin.test.services.service
|
||||||
import org.jetbrains.kotlin.test.utils.FirIdenticalCheckerHelper
|
import org.jetbrains.kotlin.test.utils.FirIdenticalCheckerHelper
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
@@ -45,7 +44,7 @@ import kotlin.test.fail
|
|||||||
private const val TEST_MODULE_NAME = "light_idea_test_case"
|
private const val TEST_MODULE_NAME = "light_idea_test_case"
|
||||||
|
|
||||||
abstract class AbstractSymbolLightClassesTestBase(
|
abstract class AbstractSymbolLightClassesTestBase(
|
||||||
override val configurator: AnalysisApiTestConfigurator
|
override val configurator: AnalysisApiTestConfigurator,
|
||||||
) : AbstractAnalysisApiBasedTest() {
|
) : AbstractAnalysisApiBasedTest() {
|
||||||
|
|
||||||
override fun configureTest(builder: TestConfigurationBuilder) {
|
override fun configureTest(builder: TestConfigurationBuilder) {
|
||||||
@@ -61,16 +60,12 @@ abstract class AbstractSymbolLightClassesTestBase(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
|
override fun doTestByMainModuleAndOptionalMainFile(mainFile: KtFile?, mainModule: TestModule, testServices: TestServices) {
|
||||||
val lastModule = with(moduleStructure.modules) {
|
val ktFiles = testServices.ktModuleProvider.getKtFiles(mainModule)
|
||||||
find { it.name.substringBefore('-') == "main" } ?: last()
|
doLightClassTest(ktFiles, mainModule, testServices)
|
||||||
}
|
|
||||||
|
|
||||||
val ktFiles = testServices.ktModuleProvider.getModuleFiles(lastModule).filterIsInstance<KtFile>()
|
|
||||||
doTestByFileStructure(ktFiles, lastModule, 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) {
|
if (isTestAgainstCompiledCode && TestModuleCompiler.Directives.COMPILATION_ERRORS in module.directives) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -105,7 +100,7 @@ abstract class AbstractSymbolLightClassesTestBase(
|
|||||||
ktFiles: List<KtFile>,
|
ktFiles: List<KtFile>,
|
||||||
testDataFile: Path,
|
testDataFile: Path,
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
project: Project
|
project: Project,
|
||||||
): String
|
): String
|
||||||
|
|
||||||
protected fun ignoreExceptionIfIgnoreDirectivePresent(module: TestModule, action: () -> Unit) {
|
protected fun ignoreExceptionIfIgnoreDirectivePresent(module: TestModule, action: () -> Unit) {
|
||||||
|
|||||||
compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/typeAliasActualization.kt
Vendored
+1
-1
@@ -5,7 +5,7 @@ package common.pack
|
|||||||
|
|
||||||
expect annotation class ExpectAnnotation
|
expect annotation class ExpectAnnotation
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: main-jvm()()(m1-common)
|
||||||
// FILE: annotations.kt
|
// FILE: annotations.kt
|
||||||
package jvm.pack
|
package jvm.pack
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ class ClassToCheck {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
// MODULE: main-jvm()()(m1-common)
|
||||||
// FILE: annotations.kt
|
// FILE: annotations.kt
|
||||||
package jvm.pack
|
package jvm.pack
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user