Analysis API: move reference resolve testsdata with errors to dedicated folders

This commit is contained in:
Ilya Kirillov
2022-01-26 10:56:43 +01:00
parent 1a2de65421
commit 4530041cbb
74 changed files with 335 additions and 465 deletions
@@ -37,12 +37,12 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolBy
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByPsiTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByReferenceTest
import org.jetbrains.kotlin.generators.TestGroupSuite
import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.*
import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.TestModuleKind
import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.component
import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.group
import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.test
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
import java.nio.file.Paths
fun TestGroupSuite.generateAnalysisApiTests() {
generateAnalysisApiComponentsTests()
@@ -52,10 +52,17 @@ fun TestGroupSuite.generateAnalysisApiTests() {
private fun TestGroupSuite.generateAnalysisApiNonComponentsTests() {
test(
AbstractReferenceResolveTest::class,
testModuleKinds = TestModuleKind.SOURCES_AND_LIBRARIES_SOURCES,
testModuleKinds = TestModuleKind.SOURCE_AND_LIBRARY_SOURCE,
addFe10 = false,
) {
model("referenceResolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
) { moduleKind ->
when (moduleKind) {
TestModuleKind.LIBRARY_SOURCE -> {
model("referenceResolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME, excludeDirsRecursively = listOf("withErrors"))
}
else -> {
model("referenceResolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
}
}
}
group("scopes") {
@@ -28,8 +28,8 @@ internal sealed class TestModuleKind(val componentName: String) {
object LIBRARY_SOURCE : TestModuleKind("librarySource")
companion object {
val SOURCES_ONLY = listOf(SOURCE)
val SOURCES_AND_LIBRARIES_SOURCES = listOf(SOURCE, LIBRARY_SOURCE)
val SOURCE_ONLY by lazy(LazyThreadSafetyMode.NONE) { listOf(SOURCE) }
val SOURCE_AND_LIBRARY_SOURCE by lazy(LazyThreadSafetyMode.NONE) { listOf(SOURCE, LIBRARY_SOURCE) }
}
}
@@ -41,7 +41,7 @@ internal enum class Frontend(val prefix: String) {
internal fun FirAndFe10TestGroup.test(
baseClass: KClass<*>,
generateFe10: Boolean = true,
init: TestGroup.TestClass.() -> Unit,
init: TestGroup.TestClass.(module: TestModuleKind) -> Unit,
) {
analysisApiTest(
"analysis/analysis-api-fir/tests",
@@ -63,8 +63,8 @@ internal fun FirAndFe10TestGroup.test(
internal fun TestGroupSuite.test(
baseClass: KClass<*>,
addFe10: Boolean = true,
testModuleKinds: List<TestModuleKind> = TestModuleKind.SOURCES_ONLY,
init: TestGroup.TestClass.() -> Unit,
testModuleKinds: List<TestModuleKind> = TestModuleKind.SOURCE_ONLY,
init: TestGroup.TestClass.(module: TestModuleKind) -> Unit,
) {
FirAndFe10TestGroup(this, directory = null, testModuleKinds).test(baseClass, addFe10, init)
}
@@ -72,26 +72,24 @@ internal fun TestGroupSuite.test(
internal fun TestGroupSuite.group(
directory: String,
testModuleKinds: List<TestModuleKind> = TestModuleKind.SOURCES_ONLY,
init: FirAndFe10TestGroup.() -> Unit,
) {
FirAndFe10TestGroup(this, directory, testModuleKinds).init()
FirAndFe10TestGroup(this, directory, testModuleKinds = listOf(TestModuleKind.SOURCE)).init()
}
internal fun TestGroupSuite.component(
directory: String,
moduleKinds: List<TestModuleKind> = TestModuleKind.SOURCES_ONLY,
init: FirAndFe10TestGroup.() -> Unit,
) {
group("components/$directory", moduleKinds, init)
group("components/$directory", init)
}
private fun FirAndFe10TestGroup.analysisApiTest(
testRoot: String,
frontend: Frontend,
testClass: KClass<*>,
init: TestGroup.TestClass.() -> Unit,
init: TestGroup.TestClass.(module: TestModuleKind) -> Unit,
) {
with(suite) {
val fullTestPath = "analysis/analysis-api/testData" + directory?.let { "/$it" }.orEmpty()
@@ -112,14 +110,19 @@ private fun TestGroup.analysisApiTestClass(
moduleKind: TestModuleKind,
testClass: KClass<*>,
prefixNeeded: Boolean,
init: TestGroup.TestClass.() -> Unit
init: TestGroup.TestClass.(module: TestModuleKind) -> Unit
) {
val fullPackage = getPackageName(frontend.prefix, testClass)
val suiteTestClassName = fullPackage +
frontend.prefix +
moduleKind.componentName.capitalizeAsciiOnly().takeIf { prefixNeeded }.orEmpty() +
getDefaultSuiteTestClassName(testClass.java.simpleName)
val suiteTestClassName = buildString {
append(fullPackage)
append(frontend.prefix)
moduleKind.componentName
.capitalizeAsciiOnly()
.takeIf { prefixNeeded }
?.let(::append)
append(getDefaultSuiteTestClassName(testClass.java.simpleName))
}
getDefaultSuiteTestClassName(testClass.java.simpleName)
@@ -131,7 +134,7 @@ private fun TestGroup.analysisApiTestClass(
useJunit4 = false
) {
method(FrontendConfiguratorTestModel(configurator))
init()
init(moduleKind)
}
}