Analysis API: do not require tests to call super.doTestByFileStructure

This commit is contained in:
Ilya Kirillov
2021-11-19 14:43:21 +01:00
parent a084ad59de
commit 22cbcfb3c4
17 changed files with 3 additions and 34 deletions
@@ -165,7 +165,7 @@ abstract class AbstractFrontendApiTest(val configurator: FrontendApiTestConfigur
registerApplicationServices()
val ktFiles = moduleInfo.testFilesToKtFiles.filterKeys { testFile -> !testFile.isAdditional }.values.toList()
configurator.prepareTestFiles(ktFiles, singleModule, testServices)
doTestByFileStructure(ktFiles, moduleStructure, testServices)
if (!enableTestInDependedMode || ktFiles.any {
InTextDirectivesUtils.isDirectiveDefined(it.text, DISABLE_DEPENDED_MODE_DIRECTIVE)
@@ -40,8 +40,6 @@ abstract class AbstractReferenceResolveTest(configurator: FrontendApiTestConfigu
}
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFiles, module, testServices)
val mainKtFile = ktFiles.singleOrNull() ?: ktFiles.first { it.name == "main.kt" }
val caretPosition = testServices.expressionMarkerProvider.getCaretPosition(mainKtFile)
val ktReferences = findReferencesAtCaret(mainKtFile, caretPosition)
@@ -20,8 +20,6 @@ abstract class AbstractCompileTimeConstantEvaluatorTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val element = testServices.expressionMarkerProvider.getSelectedElement(ktFile)
val expression = when (element) {
is KtExpression -> element
@@ -23,7 +23,6 @@ abstract class AbstractReturnTargetSymbolTest(
) : AbstractHLApiSingleFileTest(configurator) {
val commentRegex = Regex("""/\* (.+@\(.+\)|null) \*/""")
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val original = ktFile.text
val actual = buildString {
ktFile.accept(object : KtTreeVisitorVoid() {
@@ -18,8 +18,6 @@ abstract class AbstractWhenMissingCasesTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val whenExpression = testServices.expressionMarkerProvider.getElementOfTypAtCaret<KtWhenExpression>(ktFile)
val actual = executeOnPooledThreadInReadAction {
@@ -19,8 +19,6 @@ abstract class AbstractExpectedExpressionTypeTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val expressionAtCaret = testServices.expressionMarkerProvider.getElementOfTypAtCaret(ktFile) as KtExpression
val actualExpectedTypeText: String? = executeOnPooledThreadInReadAction {
@@ -16,8 +16,6 @@ import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractHLExpressionTypeTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val expression = testServices.expressionMarkerProvider.getSelectedElement(ktFile) as KtExpression
val type = executeOnPooledThreadInReadAction {
analyseForTest(expression) { expression.getKtType()?.render() }
@@ -16,8 +16,6 @@ import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractHLSmartCastInfoTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val expression = testServices.expressionMarkerProvider.getSelectedElement(ktFile) as KtExpression
val actual = executeOnPooledThreadInReadAction {
analyseForTest(expression) {
@@ -24,8 +24,6 @@ abstract class AbstractOverriddenDeclarationProviderTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractHLApiSingleModuleTest(configurator) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFiles, module, testServices)
val declaration = testServices.expressionMarkerProvider.getElementOfTypAtCaret<KtDeclaration>(ktFiles.first())
val actual = executeOnPooledThreadInReadAction {
@@ -16,8 +16,6 @@ import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractRendererTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val options = KtDeclarationRendererOptions.DEFAULT.copy(
approximateTypes = true,
renderContainingDeclarations = true,
@@ -19,8 +19,6 @@ abstract class AbstractFunctionClassKindTest (
) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val expressionAtCaret = testServices.expressionMarkerProvider.getElementOfTypAtCaret(ktFile) as KtExpression
val (type, functionClassKind) = executeOnPooledThreadInReadAction {
@@ -24,8 +24,6 @@ import java.io.File
abstract class AbstractHasCommonSubtypeTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val errors = mutableListOf<String>()
val originalText = ktFile.text
val actualTextBuilder = StringBuilder()
@@ -30,8 +30,6 @@ import kotlin.reflect.jvm.javaGetter
abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleModuleTest(configurator) {
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFiles, module, testServices)
val ktFile = ktFiles.first()
val expression = testServices.expressionMarkerProvider.getSelectedElement(ktFile)
@@ -15,8 +15,6 @@ import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractFileScopeTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val actual = executeOnPooledThreadInReadAction {
analyseForTest(ktFile) {
val symbol = ktFile.getFileSymbol()
@@ -30,8 +30,6 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
abstract fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol>
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
super.doTestByFileStructure(ktFile, module, testServices)
val createPointers = SymbolTestDirectives.DO_NOT_CHECK_SYMBOL_RESTORE !in module.directives
val pointersWithRendered = analyseOnPooledThreadInReadAction(ktFile) {
collectSymbols(ktFile, testServices).map { symbol ->
@@ -16,7 +16,5 @@ abstract class AbstractHLApiSingleFileTest(configurator: FrontendApiTestConfigur
doTestByFileStructure(singleFile, module, testServices)
}
protected open fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
configurator.prepareTestFiles(listOf(ktFile), module, testServices)
}
protected abstract fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices)
}
@@ -24,9 +24,7 @@ abstract class AbstractHLApiSingleModuleTest(configurator: FrontendApiTestConfig
doTestByFileStructure(ktFiles, singleModule, testServices)
}
protected open fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
configurator.prepareTestFiles(ktFiles, module, testServices)
}
protected abstract fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices)
protected inline fun <R> analyseOnPooledThreadInReadAction(context: KtElement, crossinline action: KtAnalysisSession.() -> R): R =
executeOnPooledThreadInReadAction {