[Analysis API test] extract AbstractPsiDeclarationProviderTest

^KT-64805
This commit is contained in:
Dmitrii Gridin
2024-01-09 16:40:35 +01:00
committed by Space Team
parent 0f3f0ff080
commit 6145255e2c
5 changed files with 13 additions and 60 deletions
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModul
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderBinaryTest;
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderTest;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all")
@TestMetadata("analysis/analysis-api/testData/standalone/binary")
@TestDataPath("$PROJECT_ROOT")
public class FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderBinaryTestGenerated extends AbstractPsiDeclarationProviderBinaryTest {
public class FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderTestGenerated extends AbstractPsiDeclarationProviderTest {
@NotNull
@Override
public AnalysisApiTestConfigurator getConfigurator() {
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModul
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderSourceTest;
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderTest;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all")
@TestMetadata("analysis/analysis-api/testData/standalone/source")
@TestDataPath("$PROJECT_ROOT")
public class FirStandaloneNormalAnalysisSourceModulePsiDeclarationProviderSourceTestGenerated extends AbstractPsiDeclarationProviderSourceTest {
public class FirStandaloneNormalAnalysisSourceModulePsiDeclarationProviderTestGenerated extends AbstractPsiDeclarationProviderTest {
@NotNull
@Override
public AnalysisApiTestConfigurator getConfigurator() {
@@ -1,45 +0,0 @@
/*
* 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.
*/
package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractPsiDeclarationProviderSourceTest : AbstractAnalysisApiBasedTest() {
override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) {
val caretPosition = testServices.expressionMarkerProvider.getCaretPosition(mainFile)
val ktReferences = findReferencesAtCaret(mainFile, caretPosition)
if (ktReferences.isEmpty()) {
testServices.assertions.fail { "No references at caret found" }
}
val element = ktReferences.first().element
val resolvedTo =
analyseForTest(element) {
val symbols = ktReferences.flatMap { it.resolveToSymbols() }
val psiElements = symbols.mapNotNull { psiForTest(it, element.project) }
psiElements.joinToString(separator = "\n") { TestPsiElementRenderer.render(it) }
}
if (Directives.UNRESOLVED_REFERENCE in mainModule.directives) {
return
}
val actual = "Resolved to:\n$resolvedTo"
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
private object Directives : SimpleDirectivesContainer() {
val UNRESOLVED_REFERENCE by directive(
"Reference should be unresolved",
)
}
}
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractPsiDeclarationProviderBinaryTest : AbstractAnalysisApiBasedTest() {
abstract class AbstractPsiDeclarationProviderTest : AbstractAnalysisApiBasedTest() {
override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) {
val caretPosition = testServices.expressionMarkerProvider.getCaretPosition(mainFile)
val ktReferences = findReferencesAtCaret(mainFile, caretPosition)
@@ -21,12 +21,11 @@ abstract class AbstractPsiDeclarationProviderBinaryTest : AbstractAnalysisApiBas
}
val element = ktReferences.first().element
val resolvedTo =
analyseForTest(element) {
val symbols = ktReferences.flatMap { it.resolveToSymbols() }
val psiElements = symbols.mapNotNull { psiForTest(it, element.project) }
psiElements.joinToString(separator = "\n") { TestPsiElementRenderer.render(it) }
}
val resolvedTo = analyseForTest(element) {
val symbols = ktReferences.flatMap { it.resolveToSymbols() }
val psiElements = symbols.mapNotNull { psiForTest(it, element.project) }
psiElements.joinToString(separator = "\n") { TestPsiElementRenderer.render(it) }
}
val actual = "Resolved to:\n$resolvedTo"
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
@@ -59,8 +59,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.*
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.types.AbstractAnalysisApiSubstitutorsTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.types.AbstractBuiltInTypeTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.types.AbstractTypeByDeclarationReturnTypeTest
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderBinaryTest
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderSourceTest
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderTest
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind
@@ -239,13 +238,13 @@ private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() {
private fun AnalysisApiTestGroup.generateAnalysisApiStandaloneTests() {
group("standalone") {
test(
AbstractPsiDeclarationProviderSourceTest::class,
AbstractPsiDeclarationProviderTest::class,
filter = testModuleKindIs(TestModuleKind.Source)
) {
model(it, "source")
}
test(
AbstractPsiDeclarationProviderBinaryTest::class,
AbstractPsiDeclarationProviderTest::class,
filter = testModuleKindIs(TestModuleKind.LibraryBinary)
) {
model(it, "binary")