UL classes flaky tests partially fix
#KT-32276 - Reduce affected tests count from 117 cases to 2 cases
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
//RELEASE_COROUTINE_NEEDED
|
||||||
class Foo {
|
class Foo {
|
||||||
suspend fun doSomething(foo: Foo): Bar {}
|
suspend fun doSomething(foo: Foo): Bar {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
|
//RELEASE_COROUTINE_NEEDED
|
||||||
suspend fun doSomething(foo: String): Int {}
|
suspend fun doSomething(foo: String): Int {}
|
||||||
|
|
||||||
fun <T> async(block: suspend () -> T)
|
fun <T> async(block: suspend () -> T)
|
||||||
+4
-9
@@ -6,11 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.asJava.classes
|
package org.jetbrains.kotlin.asJava.classes
|
||||||
|
|
||||||
import com.intellij.testFramework.LightProjectDescriptor
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
import junit.framework.TestCase
|
|
||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
|
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.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
@@ -22,7 +19,10 @@ abstract class AbstractUltraLightClassLoadingTest : KotlinLightCodeInsightFixtur
|
|||||||
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
||||||
|
|
||||||
fun doTest(testDataPath: String) {
|
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"))
|
val expectedTextFile = File(testDataPath.replaceFirst("\\.kt\$".toRegex(), ".java"))
|
||||||
if (expectedTextFile.exists()) {
|
if (expectedTextFile.exists()) {
|
||||||
@@ -41,11 +41,6 @@ abstract class AbstractUltraLightClassLoadingTest : KotlinLightCodeInsightFixtur
|
|||||||
return
|
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)) {
|
for (ktClass in UltraLightChecker.allClasses(file)) {
|
||||||
val ultraLightClass = UltraLightChecker.checkClassEquivalence(ktClass)
|
val ultraLightClass = UltraLightChecker.checkClassEquivalence(ktClass)
|
||||||
if (ultraLightClass != null) {
|
if (ultraLightClass != null) {
|
||||||
|
|||||||
@@ -6,10 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.asJava.classes
|
package org.jetbrains.kotlin.asJava.classes
|
||||||
|
|
||||||
import com.intellij.testFramework.LightProjectDescriptor
|
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.perf.UltraLightChecker
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
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
|
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(
|
UltraLightChecker.checkForReleaseCoroutine(sourceText, module)
|
||||||
"Test should be runned under language version that supports released coroutines",
|
|
||||||
module.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
|
|
||||||
)
|
|
||||||
|
|
||||||
UltraLightChecker.checkClassEquivalence(file)
|
UltraLightChecker.checkClassEquivalence(file)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-10
@@ -7,11 +7,8 @@ package org.jetbrains.kotlin.asJava.classes
|
|||||||
|
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.testFramework.LightProjectDescriptor
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
import junit.framework.TestCase
|
|
||||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.idea.perf.UltraLightChecker
|
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.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
|
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
|
||||||
@@ -24,21 +21,19 @@ abstract class AbstractUltraLightFacadeClassTest : KotlinLightCodeInsightFixture
|
|||||||
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
||||||
|
|
||||||
fun doTest(testDataPath: String) {
|
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"
|
val additionalFilePath = "$testDataPath.1"
|
||||||
if(File(additionalFilePath).exists()) {
|
if (File(additionalFilePath).exists()) {
|
||||||
myFixture.addFileToProject(additionalFilePath.replaceFirst(".kt.1", "1.kt"), File(additionalFilePath).readText())
|
myFixture.addFileToProject(additionalFilePath.replaceFirst(".kt.1", "1.kt"), File(additionalFilePath).readText())
|
||||||
}
|
}
|
||||||
|
|
||||||
val scope = GlobalSearchScope.allScope(project)
|
val scope = GlobalSearchScope.allScope(project)
|
||||||
val facades = KotlinAsJavaSupport.getInstance(project).getFacadeNames(FqName.ROOT, scope)
|
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) {
|
for (facadeName in facades) {
|
||||||
val ultraLightClass = UltraLightChecker.checkFacadeEquivalence(FqName(facadeName), scope, project)
|
val ultraLightClass = UltraLightChecker.checkFacadeEquivalence(FqName(facadeName), scope, project)
|
||||||
if (ultraLightClass != null) {
|
if (ultraLightClass != null) {
|
||||||
|
|||||||
@@ -6,14 +6,18 @@
|
|||||||
package org.jetbrains.kotlin.idea.perf
|
package org.jetbrains.kotlin.idea.perf
|
||||||
|
|
||||||
import com.intellij.openapi.Disposable
|
import com.intellij.openapi.Disposable
|
||||||
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Disposer
|
import com.intellij.openapi.util.Disposer
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.testFramework.UsefulTestCase
|
import com.intellij.testFramework.UsefulTestCase
|
||||||
|
import junit.framework.TestCase
|
||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.*
|
import org.jetbrains.kotlin.asJava.classes.*
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightNullabilityAnnotation
|
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.load.kotlin.NON_EXISTENT_CLASS_NAME
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
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> =
|
fun allClasses(file: KtFile): List<KtClassOrObject> =
|
||||||
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()
|
SyntaxTraverser.psiTraverser(file).filter(KtClassOrObject::class.java).toList()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user