193: Fix AbstractResolveByStubTest fixture configuration
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.idea.stubs
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
|
import org.jetbrains.kotlin.load.java.descriptors.PossiblyExternalAnnotationDescriptor
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
|
import org.jetbrains.kotlin.test.util.DescriptorValidator.ValidationVisitor.errorTypesForbidden
|
||||||
|
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
|
||||||
|
import org.junit.Assert
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractResolveByStubTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
|
protected fun doTest(testFileName: String) {
|
||||||
|
if (InTextDirectivesUtils.isDirectiveDefined(File(testFileName).readText(), "NO_CHECK_SOURCE_VS_BINARY")) {
|
||||||
|
// If NO_CHECK_SOURCE_VS_BINARY is enabled, source vs binary descriptors differ, which means that we should not run this test:
|
||||||
|
// it would compare descriptors resolved from sources (by stubs) with .txt, which describes binary descriptors
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
myFixture.configureByFile(fileName())
|
||||||
|
val shouldFail = getTestName(false) == "ClassWithConstVal"
|
||||||
|
AstAccessControl.testWithControlledAccessToAst(shouldFail, project, testRootDisposable) {
|
||||||
|
performTest(testFileName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
||||||
|
|
||||||
|
private fun performTest(path: String) {
|
||||||
|
val file = file as KtFile
|
||||||
|
val module = file.findModuleDescriptor()
|
||||||
|
val packageViewDescriptor = module.getPackage(FqName("test"))
|
||||||
|
Assert.assertFalse(packageViewDescriptor.isEmpty())
|
||||||
|
|
||||||
|
val fileToCompareTo = File(FileUtil.getNameWithoutExtension(path) + ".txt")
|
||||||
|
|
||||||
|
RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile(
|
||||||
|
packageViewDescriptor,
|
||||||
|
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT
|
||||||
|
.filterRecursion(RecursiveDescriptorComparator.SKIP_BUILT_INS_PACKAGES)
|
||||||
|
.checkPrimaryConstructors(true)
|
||||||
|
.checkPropertyAccessors(true)
|
||||||
|
.withValidationStrategy(errorTypesForbidden())
|
||||||
|
.withRendererOptions { options ->
|
||||||
|
options.annotationFilter = { annotationDescriptor ->
|
||||||
|
annotationDescriptor !is PossiblyExternalAnnotationDescriptor || !annotationDescriptor.isIdeExternalAnnotation
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fileToCompareTo
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user