Fix flaky tests for incorrect language version recognition

(UltraLightFacadeClassTestGenerated.testCoroutines and UltraLightClassLoadingTestGenerated.testCoroutines tests)
This commit is contained in:
Igor Yakovlev
2019-06-26 15:58:17 +03:00
parent 4c1d0678eb
commit d7f28d9e19
4 changed files with 28 additions and 2 deletions
@@ -39,12 +39,14 @@ import org.jetbrains.kotlin.codegen.ClassBuilderMode
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassContexts
import org.jetbrains.kotlin.idea.caches.lightClasses.LazyLightClassDataHolder
import org.jetbrains.kotlin.idea.facet.KotlinFacet
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.resolve.frontendService
import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasShortNameIndex
import org.jetbrains.kotlin.lexer.KtTokens
@@ -74,8 +76,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
}
override val isReleasedCoroutine
get() = KotlinFacet.get(module)
?.configuration?.settings?.languageLevel?.let { it.major >= 1 && it.minor >= 3 } ?: true
get() = module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
override fun isTooComplexForUltraLightGeneration(element: KtDeclaration): Boolean {
val facet = KotlinFacet.get(module)
@@ -6,8 +6,11 @@
package org.jetbrains.kotlin.asJava.classes
import com.intellij.testFramework.LightProjectDescriptor
import junit.framework.TestCase
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -38,6 +41,11 @@ abstract class AbstractUltraLightClassLoadingTest : KotlinLightCodeInsightFixtur
return
}
TestCase.assertTrue(
"Test should be runned under language version that supports released coroutines",
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
)
for (ktClass in UltraLightChecker.allClasses(file)) {
val ultraLightClass = UltraLightChecker.checkClassEquivalence(ktClass)
if (ultraLightClass != null) {
@@ -6,7 +6,10 @@
package org.jetbrains.kotlin.asJava.classes
import com.intellij.testFramework.LightProjectDescriptor
import junit.framework.TestCase
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.psi.KtFile
@@ -22,6 +25,12 @@ abstract class AbstractUltraLightClassSanityTest : KotlinLightCodeInsightFixture
}
val file = myFixture.addFileToProject(testDataPath, ioFile.readText()) as KtFile
TestCase.assertTrue(
"Test should be runned under language version that supports released coroutines",
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
)
UltraLightChecker.checkClassEquivalence(file)
}
}
@@ -7,8 +7,11 @@ package org.jetbrains.kotlin.asJava.classes
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.testFramework.LightProjectDescriptor
import junit.framework.TestCase
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
@@ -31,6 +34,11 @@ abstract class AbstractUltraLightFacadeClassTest : KotlinLightCodeInsightFixture
val scope = GlobalSearchScope.allScope(project)
val facades = KotlinAsJavaSupport.getInstance(project).getFacadeNames(FqName.ROOT, scope)
TestCase.assertTrue(
"Test should be runned under language version that supports released coroutines",
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
)
for (facadeName in facades) {
val ultraLightClass = UltraLightChecker.checkFacadeEquivalence(FqName(facadeName), scope, project)
if (ultraLightClass != null) {