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 {
|
||||
suspend fun doSomething(foo: Foo): Bar {}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
//RELEASE_COROUTINE_NEEDED
|
||||
suspend fun doSomething(foo: String): Int {}
|
||||
|
||||
fun <T> async(block: suspend () -> T)
|
||||
+4
-9
@@ -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)
|
||||
}
|
||||
|
||||
+5
-10
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user