UL classes flaky tests partially fix

#KT-32276 - Reduce affected tests count from 117 cases to 2 cases
This commit is contained in:
Igor Yakovlev
2019-06-27 12:46:02 +03:00
parent 5fe85e4767
commit 8b40005b0c
6 changed files with 27 additions and 28 deletions
@@ -1,3 +1,4 @@
//RELEASE_COROUTINE_NEEDED
class Foo {
suspend fun doSomething(foo: Foo): Bar {}
}
+1 -1
View File
@@ -1,4 +1,4 @@
//RELEASE_COROUTINE_NEEDED
suspend fun doSomething(foo: String): Int {}
fun <T> async(block: suspend () -> T)
@@ -6,11 +6,8 @@
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
@@ -22,7 +19,10 @@ abstract class AbstractUltraLightClassLoadingTest : KotlinLightCodeInsightFixtur
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
fun doTest(testDataPath: String) {
val file = myFixture.addFileToProject(testDataPath, File(testDataPath).readText()) as KtFile
val sourceText = File(testDataPath).readText()
val file = myFixture.addFileToProject(testDataPath, sourceText) as KtFile
UltraLightChecker.checkForReleaseCoroutine(sourceText, module)
val expectedTextFile = File(testDataPath.replaceFirst("\\.kt\$".toRegex(), ".java"))
if (expectedTextFile.exists()) {
@@ -41,11 +41,6 @@ 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,10 +6,7 @@
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
@@ -24,12 +21,10 @@ abstract class AbstractUltraLightClassSanityTest : KotlinLightCodeInsightFixture
return //tests allopen compiler plugin that we don't have in this test
}
val file = myFixture.addFileToProject(testDataPath, ioFile.readText()) as KtFile
val sourceText = ioFile.readText()
val file = myFixture.addFileToProject(testDataPath, sourceText) as KtFile
TestCase.assertTrue(
"Test should be runned under language version that supports released coroutines",
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
)
UltraLightChecker.checkForReleaseCoroutine(sourceText, module)
UltraLightChecker.checkClassEquivalence(file)
}
@@ -7,11 +7,8 @@ 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
@@ -24,21 +21,19 @@ abstract class AbstractUltraLightFacadeClassTest : KotlinLightCodeInsightFixture
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
fun doTest(testDataPath: String) {
val file = myFixture.addFileToProject(testDataPath, File(testDataPath).readText()) as KtFile
val sourceText = File(testDataPath).readText()
val file = myFixture.addFileToProject(testDataPath, sourceText) as KtFile
UltraLightChecker.checkForReleaseCoroutine(sourceText, module)
val additionalFilePath = "$testDataPath.1"
if(File(additionalFilePath).exists()) {
if (File(additionalFilePath).exists()) {
myFixture.addFileToProject(additionalFilePath.replaceFirst(".kt.1", "1.kt"), File(additionalFilePath).readText())
}
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) {
@@ -6,14 +6,18 @@
package org.jetbrains.kotlin.idea.perf
import com.intellij.openapi.Disposable
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.psi.*
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.testFramework.UsefulTestCase
import junit.framework.TestCase
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
import org.jetbrains.kotlin.asJava.classes.*
import org.jetbrains.kotlin.asJava.elements.KtLightNullabilityAnnotation
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.load.kotlin.NON_EXISTENT_CLASS_NAME
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -34,6 +38,15 @@ object UltraLightChecker {
}
}
fun checkForReleaseCoroutine(sourceFileText: String, module: Module) {
if (sourceFileText.contains("//RELEASE_COROUTINE_NEEDED")) {
TestCase.assertTrue(
"Test should be runned under language version that supports released coroutines",
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
)
}
}
fun allClasses(file: KtFile): List<KtClassOrObject> =
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()