Flaky test fix: MultiFileHighlightingTestGenerated
This commit fixes an issue introduced in
AbstractKotlinCodeVisionProviderTest under a3c881da. Global Registry was
mistakenly used to manipulate the state of KotlinCodeVisionProvider. As
a result MultiFileHighlightingTestGenerated became unstable during the
parallel execution.
This commit is contained in:
+11
-4
@@ -23,6 +23,10 @@ class KotlinCodeVisionProvider : InlayHintsProvider<NoSettings> {
|
||||
var usagesLimit: Int = 100
|
||||
var inheritorsLimit: Int = 100
|
||||
|
||||
var showUsages: Boolean = false
|
||||
var showInheritors: Boolean = false
|
||||
|
||||
|
||||
override fun isLanguageSupported(language: Language): Boolean = language is KotlinLanguage
|
||||
|
||||
override fun createConfigurable(settings: NoSettings): ImmediateConfigurable = createImmediateConfigurable()
|
||||
@@ -33,11 +37,14 @@ class KotlinCodeVisionProvider : InlayHintsProvider<NoSettings> {
|
||||
file: PsiFile, editor: Editor, settings: NoSettings, sink: InlayHintsSink
|
||||
): InlayHintsCollector? {
|
||||
|
||||
val showUsages = Registry.`is`("kotlin.code-vision.usages", false)
|
||||
val showInheritors = Registry.`is`("kotlin.code-vision.inheritors", false)
|
||||
// It's highly discouraged to use global settings from the test environment. Tests launched in parallel might be affected, e.g.
|
||||
// MultiFileHighlightingTestGenerated. Hence the properties 'showUsages' and 'showInheritors'.
|
||||
|
||||
if (!showUsages && !showInheritors) return null
|
||||
val showUsagesResolved = Registry.`is`("kotlin.code-vision.usages", false) || showUsages
|
||||
val showInheritorsResolved = Registry.`is`("kotlin.code-vision.inheritors", false) || showInheritors
|
||||
|
||||
return KotlinCodeVisionHintsCollector(editor, showUsages, showInheritors, usagesLimit, inheritorsLimit)
|
||||
if (!showUsagesResolved && !showInheritorsResolved) return null
|
||||
|
||||
return KotlinCodeVisionHintsCollector(editor, showUsagesResolved, showInheritorsResolved, usagesLimit, inheritorsLimit)
|
||||
}
|
||||
}
|
||||
+11
-12
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.idea.codeInsight.codevision
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.testFramework.utils.inlays.InlayHintsProviderTestCase
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import java.io.File
|
||||
@@ -29,22 +28,22 @@ abstract class AbstractKotlinCodeVisionProviderTest :
|
||||
val usagesLimit = InTextDirectivesUtils.findStringWithPrefixes(fileContents, "// USAGES-LIMIT: ")?.toInt() ?: 100
|
||||
val inheritorsLimit = InTextDirectivesUtils.findStringWithPrefixes(fileContents, "// INHERITORS-LIMIT: ")?.toInt() ?: 100
|
||||
|
||||
val codeVisionProvider = KotlinCodeVisionProvider()
|
||||
codeVisionProvider.usagesLimit = usagesLimit
|
||||
codeVisionProvider.inheritorsLimit = inheritorsLimit
|
||||
val provider = KotlinCodeVisionProvider()
|
||||
provider.usagesLimit = usagesLimit
|
||||
provider.inheritorsLimit = inheritorsLimit
|
||||
|
||||
when (InTextDirectivesUtils.findStringWithPrefixes(fileContents, "// MODE: ")) {
|
||||
"inheritors" -> mode(usages = false, inheritors = true)
|
||||
"usages" -> mode(usages = true, inheritors = false)
|
||||
"usages-&-inheritors" -> mode(usages = true, inheritors = true)
|
||||
else -> mode(usages = false, inheritors = false)
|
||||
"inheritors" -> provider.mode(usages = false, inheritors = true)
|
||||
"usages" -> provider.mode(usages = true, inheritors = false)
|
||||
"usages-&-inheritors" -> provider.mode(usages = true, inheritors = true)
|
||||
else -> provider.mode(usages = false, inheritors = false)
|
||||
}
|
||||
|
||||
testProvider("kotlinCodeVision.kt", fileContents, codeVisionProvider)
|
||||
testProvider("kotlinCodeVision.kt", fileContents, provider)
|
||||
}
|
||||
|
||||
private fun mode(usages: Boolean, inheritors: Boolean) {
|
||||
Registry.get(USAGES_KEY).setValue(usages)
|
||||
Registry.get(INHERITORS_KEY).setValue(inheritors)
|
||||
private fun KotlinCodeVisionProvider.mode(usages: Boolean, inheritors: Boolean) {
|
||||
showUsages = usages
|
||||
showInheritors = inheritors
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user